【发布时间】:2020-08-04 13:31:54
【问题描述】:
在 VBA 中,我尝试使用 if 语句运行循环。循环设置为在一个范围内一次运行一行(wks "Data",B7:J25)。
对于每一行,如果 C7:C25 列的值为 1,我想复制该行(例如 B7:J7)并一次将其插入工作表“temp”中。
我尝试过各种代码,例如:
Sub start()
Dim i As Integer
Dim wsData, wsCalcAndOutput, wsTemp As Worksheet
For i = 1 To 25
If Cells((7 + i), 3) = "1" Then
Worksheets("Data").Range("B7:J7").Copy _
Worksheets("temp").Range("B7:J7")
End If
Next
End Sub
但是我只能复制和粘贴范围的第一行。或者,我在 stackoverflow 找到了这个过程,但我似乎无法在每次迭代时粘贴我复制的内容:
将 wsData、wsCalcAndOutput 调暗为工作表 Dim rSPX、rSX5E、rNKY、rUKX、rSMI、rEEMUP、testData As Range
Sub start()
Dim i As Integer
For i = 1 To 25
If Cells((7 + i), 3) = "1" Then
With ActiveSheet
.Range(.Cells((7 + i), 2), .Cells((7 + i), 10)).Copy
End With
End If
Next
End Sub
这是正确的方法还是有更有效的方法?
此外,在数据集中,if 语句的条件实际上是一个称为“TRUE”或“FALSE”的字符串。 if 语句可以使用字符串作为信号而不是“1”吗?
一切顺利, 克里斯托弗
【问题讨论】:
-
不要循环复制。过滤,然后复制可见单元格。宏记录器在这里可能会有所帮助。或使用高级过滤器。
标签: vba loops if-statement range copy-paste