【发布时间】:2020-10-12 17:40:26
【问题描述】:
所以,我有两张表,“预算设置”和“摘要”。我需要使用 VBA 根据一个标准将预算设置的某些列(不是整行)复制并粘贴到摘要表的特定列中。
这就是我的摘要表现在的样子(在运行我编写的 VBA 代码之后):
因此,如果预算设置表的 A 列中的值为“是”,我想将预算设置的 B 列中的值转移到摘要的 A 列,预算设置的 C 列到摘要的 B 列,列预算设置的 F 到摘要的 C 列,预算设置的 G 列到摘要的 H 列。
这段代码可以解决问题:
Sub PCAMMatching()
a = Worksheets("Budget Setup").Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To a
If Worksheets("Budget Setup").Cells(i, 1).Value = "Yes" Then
Worksheets("Budget Setup").Cells(i, 2).Copy
Worksheets("Summary").Cells(i, 1).Select
ActiveSheet.Paste
End If
If Worksheets("Budget Setup").Cells(i, 1).Value = "Yes" Then
Worksheets("Budget Setup").Cells(i, 3).Copy
Worksheets("Summary").Cells(i, 2).Select
ActiveSheet.Paste
End If
If Worksheets("Budget Setup").Cells(i, 1).Value = "Yes" Then
Worksheets("Budget Setup").Cells(i, 6).Copy
Worksheets("Summary").Cells(i, 3).Select
ActiveSheet.Paste
End If
If Worksheets("Budget Setup").Cells(i, 1).Value = "Yes" Then
Worksheets("Budget Setup").Cells(i, 7).Copy
Worksheets("Summary").Cells(i, 8).Select
ActiveSheet.Paste
End If
Next
Application.CutCopyMode = False
End Sub
但是,正如您在我的摘要表中看到的那样,此代码创建了 3 个空白行,因为预算设置表的前 3 行在 A 列中的状态为“否”。我真正想要的是,如果状态为“否”,只需跳过该行(而不是创建空白行)并将状态为“是”的行一一复制到摘要表中。
因此,理想情况下,我希望我的摘要表如下所示:
任何帮助将不胜感激!
【问题讨论】:
-
您不想在“摘要”工作表中有任何空白行?
-
@GMalc 你可以这么说,但更准确地说,当预算设置表的 A 列中的行具有值“否”时,我希望 VBA 代码跳过它
-
为了了解你不喜欢的地方,我想,最好也向我们展示一下它现在的样子。应该从现有的外观中消除什么?
-
您可以在 A 列中筛选“是”,然后使用
SpecialCells(xlCellTypeVisible)复制列范围并粘贴到第二个工作表中的列。
标签: excel vba copy-paste