Vba 基于列A将整行移动到偏移(-1,4)

Vba 基于列A将整行移动到偏移(-1,4),vba,excel,Vba,Excel,我目前有一个很大的Excel文件,其中的数据与相应的标题不一致 为了解决这个问题,我需要剪切并粘贴列“A”包含“计划”的所有行,向上一行,向右四列。我有几千行需要移动(使用VBA)。我一直在拼凑一些代码,但没有用(我对VBA的知识有限) 下面显示了我正在处理的数据的快照。我需要把黄色的那排移到红色的区域。顶部的绿色行是手动进行更改后的外观示例。希望这段代码能在整个工作表中循环,并给我与他们尊敬的标题对齐的数据 (顺便说一句,需要移动的黄色数据行有60列宽,图片仅显示工作表的一个小快照) 快速、肮

我目前有一个很大的Excel文件,其中的数据与相应的标题不一致

为了解决这个问题,我需要剪切并粘贴列“A”包含“计划”的所有行,向上一行,向右四列。我有几千行需要移动(使用VBA)。我一直在拼凑一些代码,但没有用(我对VBA的知识有限)

下面显示了我正在处理的数据的快照。我需要把黄色的那排移到红色的区域。顶部的绿色行是手动进行更改后的外观示例。希望这段代码能在整个工作表中循环,并给我与他们尊敬的标题对齐的数据

(顺便说一句,需要移动的黄色数据行有60列宽,图片仅显示工作表的一个小快照)


快速、肮脏、未经测试的解决方案。试试看

Dim cel as range
For each cel in Range("A1:A" & Range("A1").end(xldown).row
    if cel.value = "Planned:" then
        cel.resize(1,60).cut
        cel.offset(-1,4).pastespecial xlpasteall
    end if
next cel
您可以尝试此方法(不使用VBA)

  • 选择目标区域(红色区域)
  • 点击
    Ctrl+g
    ,然后单击
    Special
    按钮
  • 选择
    空白
    ,单击
    确定

  • 键入参考公式(例如,在
    E3
    中,公式为
    =A4
    ),然后按
    Ctrl+Enter
    填充所有公式

  • 复制粘贴整个红色列作为值(即删除公式)
  • 为值
    计划:
    筛选列A并删除行

  • 我知道这有一个缺点,在步骤6中,如果您的数据非常大,Excel可能无法正确删除筛选的行

    此简短过程应在将现在空的“计划”行向上移动时处理异常导入数据

    Sub fix_planned()
        Dim rw As Long
        With Worksheets("Sheet1")
            For rw = .Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
                If LCase(Left(.Cells(rw, 1).Value2, 8)) = "planned:" Then
                    .Range(.Cells(rw, 1), .Cells(rw, Columns.Count).End(xlToLeft)).Copy _
                      Destination:=.Cells(rw, 1).Offset(-1, 4)
                    .Rows(rw).EntireRow.Delete
                End If
            Next rw
        End With
    End Sub
    

    建议您修复数据源,这样您就不必“事后”重复修复数据。

    看起来您的导入数据中有换行符。您是否正在为将来修改数据提要?如果您确实一直在“拼凑一些代码…”,那么我建议您发布部分或全部代码(工作与否),以便我们能够评估可能存在的任何未回答的问题。