2017-02-17 231 views
-3

我正试图自动完成更新我们从数据库中的客户端收到的数据的电子表格。 第一步是在每列的末尾添加空白行,以便可以用新数据填充它们。Excel VBA在每个值的末尾添加行

enter image description here

逻辑上我认为它会是这样的: 1.找到 “客户端1” 的最后一个实例 2.添加行

任何建议表示赞赏。请让我知道,如果这不够描述。

+0

为什么你需要在未来添加行,而不是把值可用行?你的意思是你需要复制行吗?在任何情况下检查Range对象的.End属性:https://msdn.microsoft.com/en-us/library/office/ff839539.aspx – Absinthe

+0

1.我需要添加行,以便我可以使用收到最新数据。这是我第二个使用VBA的项目。我不知道我在做什么。我不是想利用好的SO人。我尝试了一些东西,但我发现的东西甚至都很接近。我想出了一个非常漫长的工作。但我认为必须有一些简单的For循环或甚至是我不知道的单个函数。 –

+0

应该不需要添加空白行,因为您可以将其添加到底部,然后按客户端排序行,然后按日期排序,从而为您提供所需的最终结果。检查[这里](https://www.thespreadsheetguru.com/blog/2014/7/7/5-different-ways-to-find-the-last-row-or-last-column-using-vba)for识别最后一行,并[在此](https://msdn.microsoft.com/en-us/library/office/ff840646.aspx)对表进行排序。如果您在执行这些功能时遇到困难,请在您的问题中添加编辑,包括您目前使用的代码,我们将帮助您解决问题。 – MoondogsMaDawg

回答

0

你,你可以运行一个简单的循环中的值列中的每个单元比较和值更改时添加行:

Sub InsertClient() 

lastrow = Cells(Rows.Count, "A").End(xlUp).Row 

    For i = lastrow To 2 Step -1 
     If i = lastrow Then 
     Range("A" & i + 1).Value = Range("A" & i).Value 
     End If 

     If Range("A" & i).Value <> Range("A" & i - 1).Value Then 
     Rows(i).Insert shift:=xlShiftDown 
     Range("A" & i).Value = Range("A" & i - 1).Value 
     End If 

    Next i 

End Sub 
相关问题