【问题标题】:Copy and paste based on criteria根据条件复制和粘贴
【发布时间】:2018-03-09 02:29:42
【问题描述】:

我正在尝试在工作簿中编写一个脚本,该脚本将检查第 10 行中的单独工作表(“工作表 2”)的值(“是”) - 请参阅 Worksheet 2 Column B

如果返回“是”,我想将第 4 行中的单元格复制到同一列(在本例中为 B4)并将其粘贴到 B 列中的“工作表 1”,从第 2 行开始 - 请参阅Worksheet 1 Column B

然后我希望它检查接下来的 100 行是否有相同的信息,并将第 10 行中所有为“是”的第 4 行单元格粘贴到“工作表 1 - B 行”中。这是我目前拥有的:

Sub CommandButton1_Click()

Dim lr As Long
lr = Cells(Rows.Count, "B").End(xlUp).Row
For Each Sheets("Option 2").Cell In Range("B10:CZ10")
        If Cell.Value = Range("Yes").Value Then
       Worksheets("Option 2").Cell.Range(B4).Copy Range("B")
       Exit Sub
    End If
Next Cell
    Worksheets("Option 2").Range("B5:CW10").Copy Range("B")
    Range("B" & lr + 1).PasteSpecial Paste:=xlPasteValues
End Sub

对不起,如果这写得很糟糕。我是 VBA 新手,没有太多指导。任何帮助将不胜感激!

【问题讨论】:

  • 您的意思是查看 100 列,Option2 中的第 10 行,对于每一个说是的,复制这些列中的第 4 行单元格并将它们粘贴到下一个可用的行工作表 1 起始列 B?如果是这样,您可以只使用 If 语句。如果是的话,您是希望表 1 中的值之间有空格还是全部相邻?
  • 感谢您的回复,正确,我希望它查看选项 2 中第 10 行的所有 100 列。当它列出从第 4 行单元格返回的数据时,我希望它列出它在工作表 1 的 B 列中逐行显示。无需跳过空格。

标签: vba excel


【解决方案1】:

也许这就是你正在尝试的。

Sub CommandButton1_Click()
    Dim lr As Long, rng as range

    lr = Cells(Rows.Count, "B").End(xlUp).Row

    For Each rng In Sheets("Option 2").Range("B10:CZ10")
        If lcase(rng.Value) = "yes" Then
            lr = lr+1
            cells(lr, "B") = rng.offset(-6, 0).value
        End If
    Next rng

End Sub

【讨论】:

  • 好消息是我没有收到错误,但数据没有填充到工作表 1。我在工作表 1 上设置了命令按钮,是不是有问题?
  • 用 F8 单步执行它并留意 lr 变量。是的,代码不应该是 Sheet1(目标)代码表。
  • 谢谢!我通过删除“lcase”让它工作。不知道为什么它起作用了,但它起作用了!!
  • 听起来你把我的“是”改成了“是”。 lcase(rng.Value) = "yes" 旨在使比较不区分大小写。
猜你喜欢
  • 2019-01-01
  • 2015-07-17
  • 1970-01-01
  • 2018-09-24
  • 2021-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-06
相关资源
最近更新 更多