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

时间:2015-12-15 01:27:05

标签: excel vba excel-vba

我目前有一个大型Excel文件,其中的数据与相应的标题不对齐。

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

下面显示了我正在使用的数据的快照。我需要将黄色行移到红色区域。顶部的绿色行是手动进行更改后的示例。希望这段代码能够循环遍历整个工作表,为我提供符合其尊重标题的数据。

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

enter image description here

3 个答案:

答案 0 :(得分:0)

快速&脏的,未经测试的解决方案。试一试。

optionalDependencies

答案 1 :(得分:0)

您可以尝试此方法(不使用VBA)

  1. 选择目的地区域(红色区域)
  2. 点击Ctrl+g,然后点击Special按钮
  3. 选择Blank,点击Ok

    enter image description here

  4. 输入参考公式(例如,E3公式为=A4)并点击Ctrl+Enter以填写所有

  5. 复制粘贴整个红色列作为值(即删除公式)
  6. 过滤列A的值Planned:并删除行。
  7. 我知道这有一个缺点,如果您的数据非常大,则第6步可能无法正确删除已过滤的行

答案 2 :(得分:0)

这个简短的程序应该处理异常的导入数据,同时转移现在空白的计划的'排队。

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

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