2016-11-12 104 views
0

我试图避免重复行,所以我想检查最后一行的数据是否与新值不同,如果是这样,然后添加新行与新的数据。不断添加Excel VBA - 只有在新行与最后一行不同时,如何在工作表末尾添加新行?

不知怎的,这是不工作和新的价值观:

Set ws = Worksheets("mySheet") 
lastrow = ws.Cells(rows.Count, 1).End(xlUp).Row 

If item = ws.Cells(lastrow , 5).Value And color = ws.Cells(lastrow, 8).Value And price = ws.Cells(lastrow, 9).Value Then 
' do nothing 
Else 
' add new rows 
    newrow = ws.Cells(rows.Count, 1).End(xlUp).Row + 1 
    ws.Cells(newrow , 5).Value = item 
    ws.Cells(newrow , 8).Value = color 
    ws.Cells(newrow , 9).Value = price 
End If 

很显然,我有充满了其他数据的其他列,但这些都不是口是心非的关键。我的第一列包含DateTime值。

+0

你最好屁股数据的一些例子导致不必要的行为。并请澄清:您的“第一栏”栏目5? – user3598756

+0

不,第一列是第1列 – Totallama

+0

你说得对。问题是与条件中的值.. – Totallama

回答

0

没有任何数据的例子是很难说这是怎么回事

在此期间,你可能会想尝试这个小重构

With Worksheets("mySheet") '<--| reference your relevant worksheet 
    With .Cells(.Rows.Count, 1).End(xlUp) '<--| reference its column "A" last not empty cell 
     If Not (item = .Offset(, 4).Value And Color = .Offset(, 7).Value And Price = .Offset(, 8).Value) Then '<-- check if write a new record: do it referencing cells to be compared as offset from referenced one 
      .Offset(1, 4).Value = item ' <--| reference new record cells as offsetted 1 row doen the referenced one 
      .Offset(1, 7).Value = Color ' <--| same as above 
      .Offset(1, 8).Value = Price ' <--| same as above 
     End If 
    End With 
End With 
相关问题