【问题标题】:Copy cells from one sheet to another based on criteria in another cell根据另一个单元格中的条件将单元格从一个工作表复制到另一个工作表
【发布时间】:2014-11-10 15:15:13
【问题描述】:

我想使用 VBA 根据某些单元格的条件是否在两个工作表中匹配,将单元格从一个工作表复制到同一工作簿中的另一个工作表。

示例: 如果 Sheet1!A1 = Sheet2!A1 则将 Sheet1!B1 复制到 Sheet2!B2

我可以通过一个函数来做到这一点:=IF($A1=Sheet1!$A1, VLOOKUP(Sheet1!$A1, Sheet1!$A1:$D1, 2),"") 但我不知道让它在 VBA 中工作。我想到了一个 IF|ELSE 语句,但无法让它发挥作用。

【问题讨论】:

  • 只是针对那个单元格,还是要循环遍历这些单元格?
  • 对不起...我将循环遍历单元格。

标签: vba excel


【解决方案1】:

这应该适合你:

For Counter = 1 To 10 
    If Sheets(1).Range("A" & Counter).Value = Sheets(2).Range("A" & Counter).Value Then
        Sheets(2).Range("B" & (Counter + 1)).Value = Sheets(1).Range("B" & Counter).Value
    End If
Next Counter

【讨论】:

    【解决方案2】:
    Sub copyToSheet()
    For i = 1 To 10
        If ThisWorkbook.Worksheets("sheet1").Range("A1").Offset(i - 1, 0).Value = ThisWorkbook.Worksheets("sheet2").Range("A1").Offset(i - 1, 0).Value Then
        ThisWorkbook.Worksheets("sheet2").Range("A1").Offset(i - 1, 1) = ThisWorkbook.Worksheets("sheet1").Range("A1").Offset(i - 1, 0).Value
        End If
        Next i
    End Sub
    

    【讨论】:

    • 好像是循环遍历Sheet2上的第一组数据然后停止而不是继续到工作表的末尾。可以做些什么来循环遍历 Sheet 2 直到结束?
    • 用你数据的最后一个单元格替换“10”,或者如果它的变量并且在第一个和最后一个数据单元格之间没有空单元格,ThisWorkbook.Worksheets("sheet2").Range("A1").End(xlDown).Row
    • 即使我这样做,它也只是执行第一个“设置”然后停止...它将循环遍历 Sheet1 的值并替换 Sheet1 上与 Sheet2 匹配的每一行的第一行和然后停止。
    • 你所说的“设置”是什么意思?填充单元格组之间是否有空单元格?
    • “设置”是指 Sheet1 有 9 行具有唯一值,Sheet2 具有相同的值在 1702 行中随机重复。当我运行宏时,它会将前 9 的值放在 Sheet2 上,然后停止……它需要继续遍历所有 1702 行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多