我想自动更新表2&根据数据,来自表1的表3。如果它得到解决将会有所帮助。
我是视觉基本编码的新手,所以不知道它的脚本但是知道c ++。无论解决方案是什么,它都会有所帮助。
我尝试过以下代码:
Sub FindMatches()
Dim oldrow As Integer
Dim newrow As Integer
For oldrow = 4 To 14
For newrow = 3 To 20
If Cells(oldrow, 12) = Cells(1, newrow) And Cells(oldrow, 13) = Cells(newrow, 1) Then 'date and brand
If Cells(1, 14) = Cells(newrow, 2) Then
Cells(newrow, 3).Value = Cells(oldrow, 14).Value ' m1
End If
If Cells(1, 15) = Cells(newrow + 1, 2) Then
Cells(newrow + 1, 3).Value = Cells(oldrow, 15).Value ' m2
End If
If Cells(1, 16) = Cells(newrow + 2, 2) Then
Cells(newrow + 2, 3).Value = Cells(oldrow, 16).Value ' m3
End If
If Cells(1, 17) = Cells(newrow + 3, 2) Then
Cells(newrow + 3, 3).Value = Cells(oldrow, 17).Value ' issue
End If
If Cells(1, 18) = Cells(newrow + 4, 2) Then
Cells(newrow + 4, 3).Value = Cells(oldrow, 18).Value ' repack
End If
If Cells(1, 19) = Cells(newrow + 5, 2) Then
Cells(newrow + 5, 3).Value = Cells(oldrow, 19).Value ' extra
End If
If Cells(1, 20) = Cells(newrow + 6, 2) Then
Cells(newrow + 6, 3).Value = Cells(oldrow, 20).Value ' wastage
End If
End If
Next newrow
Next oldrow
End Sub
答案 0 :(得分:1)
也许您甚至不需要VBA来更新数据。您只需在单元格中输入公式=C2
即可引用单元格(并从中检索数据)。
您还可以引用其他工作表中的单元格,例如=Sheet1!C2
。
您可以使用诸如IF之类的函数来执行更复杂的案例和逻辑。
答案 1 :(得分:0)
如果没有工作表引用,您就无法使用Cells
。因为excel不知道你要使用哪张表并假设活动表。因此,您需要ActiveSheet.cells()
并切换活动表(但不强烈推荐)。而是像这样使用工作表声明
Dim myLovelySheet as worksheet
Set mylovelySheet = Sheets("yourCuteSheetname")
然后你可以像使用对象一样使用表格(你会熟悉C ++)
myLovelySheet.cells()
或者你可以使用像这样的结构在工作表上执行多个操作
with myLovelySheet
.cells()
.cells()
'etc
end with
基本上你的方法几乎是正确的,但尝试研究更多的代码。我可以推荐this,其中包含多个具有良好实践的示例