我有两张纸。在第一篇中,我有几列,即零件编号,价格,描述等。
在第二张表格中,我有两列,其中包含少量零件编号和新价格。
我需要一种方法来浏览表1并将其与表2的部件号进行比较。如果它们相同,则表1中的价格需要用表2中的价格更新。
我已经搜索过,但没有完全覆盖这个或至少,我缺乏理解,因为我是excel的新手。
希望我能得到一些帮助,谢谢!
答案 0 :(得分:1)
这是宏
的另一个选项Sub update()
Dim cell1, cell2, col1, col2 As Range
For Each cell1 In Worksheets("Sheet1").Range("A:A")
If IsEmpty(cell1.Value) Then Exit For
For Each cell2 In Worksheets("Sheet2").Range("A:A")
If IsEmpty(cell2.Value) Then Exit For
If cell1.Value = cell2.Value Then
Worksheets("Sheet1").Cells(cell1.Row, 2) = _
Worksheets("Sheet2").Cells(cell2.Row, 2)
End If
Next cell2
Next cell1
End Sub
如果您不熟悉编程,只需按住Alt + F11,按插入>新模块并复制并粘贴所提供的任何代码。
PS。 Excel Hero的选项将消耗更少的内存
答案 1 :(得分:0)
如果您的第一张纸上有“#master”字样,那么零件清单和第二个工作表包含一个较小的清单,用于以新价格更新主清单,然后单独的公式不会成为解决方案。
要覆盖主工作表上的价格,您需要一个VBA宏。
这个宏将进行价格更新,假设柱子A和B用于两张纸上的零件和价格:
Public Sub UpdatePrices()
Dim m1, m2, u1, u2, i&, j&
m1 = Sheet1.[a1:index(a:a,counta(a:a))]
m2 = Sheet1.[b1:index(b:b,counta(a:a))]
u1 = Sheet2.[a1:index(a:a,counta(a:a))]
u2 = Sheet2.[b1:index(b:b,counta(a:a))]
For j = 1 To UBound(m1)
For i = 1 To UBound(u1)
If u1(i, 1) = m1(j, 1) Then
m2(j, 1) = u2(i, 1)
Exit For
End If
Next
Next
Sheet1.[b1].Resize(UBound(m2)) = m2
End Sub