【发布时间】:2020-09-08 08:52:59
【问题描述】:
我正在尝试执行以下操作:
- 检查A列的单元格是否为空白,
- 如果是,从 C 列(同一行)中删除 vale
- 将剪切值粘贴到 D 列(上方 1 行)
- 删除空白行 (row3)
- 循环直到第 1302 行
场景:
- 检查 A1 行,空 = 假。
- 检查 A2 行,空 = false。
- 检查 A3 行,空 = true。
- 切割 C3。粘贴到 D2。
- 检查 A4 行,空 = 假。 检查 A5 行,空 = true。
- 切割 C5。粘贴到 D4。
- 删除第 3 行(留空)
- 循环直到第 1302 行。
到目前为止
Sub Macro5()
Range("A2").Select
Do Until IsEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Select
Loop
End Sub
TIA
【问题讨论】:
-
您可能会从阅读How to avoid using Select in Excel VBA 中受益。 • 您的问题究竟是什么?你一个都没问。你在哪里卡住或错误?你停止继续的原因是什么?你试过宏记录器吗?
-
剪切是指删除 c 列中的那个单元格并将数据向上移动吗?如果是这样,您的数据将与第一个空白实例脱节。还是要在将 C 列复制到 D 后删除整行?如果您确实想删除,这可能需要反向循环。否则,如果您在 A3 中有一个空白,那么当您删除该行时,A4 将变为 A3,但您的下一个循环将转到 A4,这意味着您跳过 A4,因为它现在是 A3。
-
我想为了避免跳过,我可以专注于只剪切 C3 并将其粘贴到 D2。然后运行另一个宏来清理空白行。
-
不需要两个宏。一个只需要从下往上运行。您是否再次删除(“A”中的一行有空白)只是 C 列或整行或 A:C ?
-
将 C3 复制到 D2 后,我正在删除空白行。切割 C3 后,第 3 行将变为空白。整个第 3 行将被删除,第 4 行将向上移动成为第 3 行。