使用宏根据条件复制值

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