根据另外两个相等的列更新excel列中的值

时间:2015-08-21 07:52:16

标签: excel excel-formula

我有两张纸。在第一篇中,我有几列,即零件编号,价格,描述等。

在第二张表格中,我有两列,其中包含少量零件编号和新价格。

我需要一种方法来浏览表1并将其与表2的部件号进行比较。如果它们相同,则表1中的价格需要用表2中的价格更新。

我已经搜索过,但没有完全覆盖这个或至少,我缺乏理解,因为我是excel的新手。

希望我能得到一些帮助,谢谢!

2 个答案:

答案 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