【问题标题】:Check, Cut and Paste, Delete Row, move检查、剪切和粘贴、删除行、移动
【发布时间】:2020-09-08 08:52:59
【问题描述】:

我正在尝试执行以下操作:

  1. 检查A列的单元格是否为空白,
  2. 如果是,从 C 列(同一行)中删除 vale
  3. 将剪切值粘贴到 D 列(上方 1 行)
  4. 删除空白行 (row3)
  5. 循环直到第 1302 行

场景:

  1. 检查 A1 行,空 = 假。
  2. 检查 A2 行,空 = false。
  3. 检查 A3 行,空 = true。
  4. 切割 C3。粘贴到 D2。
  5. 检查 A4 行,空 = 假。 检查 A5 行,空 = true。
  6. 切割 C5。粘贴到 D4。
  7. 删除第 3 行(留空)
  8. 循环直到第 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 行。

标签: excel vba


【解决方案1】:

因为你要删除行,所以从下往上循环

For rw = 1302 to 1 step -1

使用 Values 属性测试单元格

    If IsEmpty(Cells(re, 1).Value) Then

假设您不需要复制格式,只需复制值

        Cells(rw - 1, 4).Value = Cells(rw, 3).Value

删除行

        Rows(rw).Delete 

继续

   End If
Next

【讨论】:

    【解决方案2】:

    给你。更改可能需要更改的几件事。我已将其设置为在第 2 行到第 1302 行之间运行。它从下往上循环,这是删除行时需要的。

    Sub CutC()
    
    Dim i As Long, ws As Worksheet
    
    Set ws = Sheets("Sheet1") 'set your sheet name
    
    For i = 1302 To 2 Step -1 'This is your range to work from. Going from bottom row (1302) to top row (2)
        If ws.Range("A" & i) = "" Then
            ws.Range("D" & i - 1) = ws.Range("C" & i)
            ws.Range("A" & i).EntireRow.Delete
        End If
    Next i
    
    End Sub
    

    【讨论】:

      【解决方案3】:

      将此公式输入D2并填写:=if(A3='', C3)

      复制 D 列并粘贴为值。

      过滤A列中的空白单元格,清除内容或删除整行由您决定。

      【讨论】:

      • @GabG 你试过了吗?
      • 哦,我没注意到有标题。更新公式
      • 我做到了,但是一旦我删除了第 3 行,那么 D2 将为零。我想把 C3 剪成 D2。您的方法是使用 C3 作为 D2 值的参考。让我更新一下问题。
      • @GabG 这就是为什么我说复制列 D 并粘贴为值,这意味着在清除引用内容之前先清除公式
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-17
      • 1970-01-01
      • 2010-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多