簡體   English   中英

在工作表之間比較和復制數據

[英]Compare and copy data between worksheets

這是我想做的:

  • 如果
    • 工作表A的單元格H =工作表B的單元格E(包含單詞), 並且
    • 工作表A的單元格J =工作表B的單元格H(包含數字)
    • 工作表A的單元格K =工作表B的單元格I(包含數字)
  • 然后
    • 將工作表A的單元格O復制到工作表B的單元格L(包含數字)

換一種說法:

  • 如果工作表A的H2,J2,K2 =工作表B的E1,H1,I1,則將工作表A的O2復制到工作表B的L1。
  • 如果工作表A的H3,J3,K3 =工作表B的E5,H5,I5,則將工作表A的O3復制到工作表B的L5。

我想要的宏應該與A和B的整個工作表匹配並復制。來自工作表A的數據只能使用一次。


到目前為止,這是我所擁有的,但似乎不起作用。

Dim sh1 As Worksheet, sh2 As Worksheet
Dim j As Long, i As Long, lastrow As Long
Set sh1 = Worksheets("Worksheet A")
Set sh2 = Worksheets("Worksheet B")

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

For i = 2 To lastrow
   j = (i - 2) * 4 + 1
   If sh1.Cells(i, "H").Value = sh2.Cells(j, "E").Value And _
      sh1.Cells(i, "J").Value = sh2.Cells(j, "H").Value And _
      sh1.Cells(i, "K").Value = sh2.Cells(j, "I").Value Then
      sh1.Cells(i, "O").Copy sh2.Cells(j, "L")
   End If
   j = j + 4
Next

更新您需要執行兩個循環。 這個新的子例程適用於任何行。 請注意多場比賽,因為這只會花費最后一場比賽:

Sub CopyCells()
    Dim sh1 As Worksheet, sh2 As Worksheet
    Dim j As Long, i As Long, lastrow1 As Long, lastrow2 As Long
    Set sh1 = Worksheets("Worksheet A")
    Set sh2 = Worksheets("Worksheet B")

    lastrow1 = sh1.Cells(Rows.Count, "A").End(xlUp).Row
    lastrow2 = sh2.Cells(Rows.Count, "A").End(xlUp).Row

    For i = 2 To lastrow1
        For j = 1 To lastrow2
            If sh1.Cells(i, "H").Value = sh2.Cells(j, "E").Value And _
                sh1.Cells(i, "J").Value = sh2.Cells(j, "H").Value And _
                sh1.Cells(i, "K").Value = sh2.Cells(j, "I").Value Then
                sh1.Cells(i, "L").Value = sh2.Cells(j, "O").Value
            End If
        Next j
    Next i
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM