复制列,使用Excel VBA删除原始列
我一直在努力简化一个脚本,我想创建一个脚本,将一系列列复制到最左边的未占用列。然后删除原始列 我已经调整了这个脚本,我发现它可以做我想做的事情,它可以复制所有内容,但不会删除 我还需要它来创建它,以便它可以选择所述列范围中的哪一行作为参考 有人能看一下剧本,帮我完成我开始的工作吗?我一直在缓慢地学习Excel VBA,我的工作使我在准备就绪之前在多个方向上取得了进步,所以我知道复制和删除选项应该很简单,但由于我的工作范围,我没有时间正确地学习所有内容,如果这是一个简单的答案,我很抱歉,但是我需要尽可能地精简这个脚本,这就是我目前所知道的,并在互联网上搜索代码和帮助的内容复制列,使用Excel VBA删除原始列,excel,vba,Excel,Vba,我一直在努力简化一个脚本,我想创建一个脚本,将一系列列复制到最左边的未占用列。然后删除原始列 我已经调整了这个脚本,我发现它可以做我想做的事情,它可以复制所有内容,但不会删除 我还需要它来创建它,以便它可以选择所述列范围中的哪一行作为参考 有人能看一下剧本,帮我完成我开始的工作吗?我一直在缓慢地学习Excel VBA,我的工作使我在准备就绪之前在多个方向上取得了进步,所以我知道复制和删除选项应该很简单,但由于我的工作范围,我没有时间正确地学习所有内容,如果这是一个简单的答案,我很抱歉,但是我需要
Option Explicit
Sub MoveColumns()
Dim cel As Range
With ActiveSheet
For Each cel In Intersect(.UsedRange, .[B:N]).SpecialCells(xlCellTypeBlanks).Cells
cel = cel.Offset(0, 1)
Next
End With
End Sub
提前谢谢
不要介意main下面的数据,我有一个脚本可以删除它,所以当这个脚本运行时,它将在没有任何数据的情况下运行。在这种情况下,我想将副本G:G移动到F:F,然后删除G:G,将H:H移动到G:G,删除H:H,然后继续,直到所有列并排排列,中间没有空格,其他任何地方都没有副本 你想要的是复杂的移动方式。最简单的方法是删除空白列。其余列将自动向左移动:)我假设第194行之后没有数据 试试这个
Option Explicit
Sub MoveColumns()
Dim ws As Worksheet
Dim lastCol As Long, i As Long
Dim DelRange As Range
Set ws = Sheets("BackOrder")
With ws
lastCol = .Cells.Find(What:="*", _
After:=.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Column
For i = 1 To lastCol
If Application.WorksheetFunction.CountA(.Columns(i)) = 0 Then
If DelRange Is Nothing Then
Set DelRange = .Columns(i)
Else
Set DelRange = Union(DelRange, .Columns(i))
End If
End If
Next
If Not DelRange Is Nothing Then DelRange.Delete
End With
End Sub
HTH我有点搞不懂你到底想干什么?你能给我举个例子吗?当然。。。这是excel工作簿。基本上,我想做的是先到第6行,然后是B列,然后一直到N列,任何有空格的地方,取最右边的列,将数据复制到最左边的空列,删除原始数据,然后继续,直到没有更多的列可以移动。这是本书的链接,所以基本上你想删除单元格I5:K193?然后对M5:M193重复同样的过程?还有第194行之后的数据呢?不要介意main下面的数据,我有一个脚本可以删除它,所以当这个脚本运行时,它将运行,而不包含任何内容。在这种情况下,我想将副本G:G移动到F:F,然后删除G:G,将H:H移动到G:G,删除H:H,然后继续,直到所有列并排排列,中间没有空格,其他任何地方都没有副本。问题是O和P上的某些内容需要保留在O和P上,你正在做的是移动列…这是在这种情况下不能做的事情。只需做一点小小的更改即可:)我会在醒来时更新代码。上床睡觉:)已经是早上5点45分了