使用宏根据条件复制值
Copy values based on criteria with macro
我有 2 列,一列包含日期(列 A:A,类型为 dd/mm/yyyy hh:mm),另一列包含参数值(列 B:B),在每个日期注册。但并非所有日期都有注册值(在这种情况下,在 B 列中我将有 -9999.
我需要的是只复制到其他列(比如 D:D 和 E:E),只复制值不是 -9999 的单元格和相应的日期。例如:
Example
我的数据系列很长,可以达到 10000 行或更多行,所以我无法“手动”进行此选择。我更喜欢宏,而不是数组公式,因为我想选择计算的时刻。
这段代码应该可以满足您的需求。这会将 B 列中具有值的所有行复制到 D 和 E 列中。'
Sub copyrows()
Dim RowNo, newRowNo As Long
RowNo = 2
newRowNo = 2
With ThisWorkbook.ActiveSheet
.Cells(1, 4).Value = "Date"
.Cells(1, 5).Value = "H_Selected"
Do Until .Cells(RowNo, 1) = ""
If .Cells(RowNo, 2) <> "-9999" Then
.Cells(newRowNo, 4) = .Cells(RowNo, 1)
.Cells(newRowNo, 5) = .Cells(RowNo, 2)
newRowNo = newRowNo + 1
End If
RowNo = RowNo + 1
Loop
End With
End Sub
我有 2 列,一列包含日期(列 A:A,类型为 dd/mm/yyyy hh:mm),另一列包含参数值(列 B:B),在每个日期注册。但并非所有日期都有注册值(在这种情况下,在 B 列中我将有 -9999.
我需要的是只复制到其他列(比如 D:D 和 E:E),只复制值不是 -9999 的单元格和相应的日期。例如:
Example
我的数据系列很长,可以达到 10000 行或更多行,所以我无法“手动”进行此选择。我更喜欢宏,而不是数组公式,因为我想选择计算的时刻。
这段代码应该可以满足您的需求。这会将 B 列中具有值的所有行复制到 D 和 E 列中。'
Sub copyrows()
Dim RowNo, newRowNo As Long
RowNo = 2
newRowNo = 2
With ThisWorkbook.ActiveSheet
.Cells(1, 4).Value = "Date"
.Cells(1, 5).Value = "H_Selected"
Do Until .Cells(RowNo, 1) = ""
If .Cells(RowNo, 2) <> "-9999" Then
.Cells(newRowNo, 4) = .Cells(RowNo, 1)
.Cells(newRowNo, 5) = .Cells(RowNo, 2)
newRowNo = newRowNo + 1
End If
RowNo = RowNo + 1
Loop
End With
End Sub