我一直在努力简化脚本,我想创建一个脚本,它可以在一系列列中复制到最左边未占用的列。然后删除原始列。
我已经调整了这个脚本,我发现它主要是我想做的,它会复制一切,但不会删除。
我还需要它来使它可以选择所述列范围中的哪一行来查看以供参考。
有人可以看看脚本并帮助我完成我的开始吗?我一直在慢慢学习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
提前致谢。
答案 0 :(得分:1)
不要介意主要的数据,我有一个脚本可以摆脱它,所以当这个脚本运行时,它将运行时没有任何东西。如果我想将Copy 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