【问题标题】:VBA Code in Excel to select a cell based on two criteriaExcel中的VBA代码根据两个条件选择单元格
【发布时间】:2017-02-10 14:00:11
【问题描述】:

我想要在“PP1 & PP2 Shortage list”上按下一个按钮。

按下此按钮时,我希望宏从 D5 和 F5 中获取值,并找到这两个值出现在“PP1 绘制计划”的单独列中的行。

然后它将突出显示找到的行下方的 A:AF 列,复制所有内容并将其粘贴回 A2。

我已经尝试了许多循环代码并找到了代码,但到目前为止我都没有运气,我希望你们中的一个聪明人可以对这个问题提出一些新的想法。

【问题讨论】:

标签: vba excel loops find


【解决方案1】:

R3uk 是正确的,但您正在寻找新的想法。

为什么不将可以在“PP1 绘制计划”上找到符合您的条件的行号的公式与使用该行号复制下面所有内容的简单宏结合起来。无需循环!

将下面的公式放入与 D5 和 F5 单元格相同的工作表上的空单元格中。我在宏中使用了 A1。相应地更改搜索列(我使用了 $D:$D 和 $F:$F)。重要提示:按 SHIFT+CTRL+ENTER 将 {} 添加到此公式中。

=MATCH(D5&F5,'PP1 油漆计划'!$D:$D&'PP1 油漆计划'!$F:$F,0)

接下来复制此代码并根据需要进行更改。它将一个名为 intFoundRow 的变量设置为包含公式的单元格(将 A1 更改为您的单元格引用)。然后它会复制该行下方的所有内容并将其粘贴到您的目标工作表中。我不确定那叫什么,所以请更改文本。

Sub CopyShortageData()
  intFoundRow = Sheets("PP1 & PP2 Shortage list").Range("A1").Value
  Range(Sheets("PP1 Paint plan").Range("A" & intFoundRow & ":AF" & intFoundRow), Sheets("PP1 Paint plan").Range("A" & intFoundRow & ":AF" & intFoundRow).End(xlDown)).Copy
  Sheets("Your destination sheet").Range("A2").PasteSpecial xlPasteAll
End Sub

【讨论】:

  • 感谢 Gordon,我收到运行时错误 1004。在这行代码中,Sheets("PP1 Paint plan").Range("A" & intFoundRow & ":AF" & intFoundRow)。选择
  • 嗨,对不起,我没有测试代码,它不喜欢“选择”语句,所以我更改了代码并测试了它是否有效。
  • 戈登你是明星!在模块中完美工作,但在单击 activeX 按钮时从未工作。然而,现在已经通过在按钮本身上进行编码来解决这个问题:Module2.CopyShortageDataPP1 无论如何,非常感谢和问候。乔
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多