VBA Excel-查找某一列并将其移动到Excel中另一列之前的列
这是一个例子: 我想找到最后一列(左边的第一列,右边的列是空的——在本例中是F列)。然后我想将此列移到标题为“D/G/B.x”的列的左侧(在本例中为H列) 目前,我能够根据标题文本搜索一列并将其移动到另一列位置,这并不完全是我想要实现的,而是我试图实现的目标: 以下是我当前的VBA:VBA Excel-查找某一列并将其移动到Excel中另一列之前的列,excel,vba,Excel,Vba,这是一个例子: 我想找到最后一列(左边的第一列,右边的列是空的——在本例中是F列)。然后我想将此列移到标题为“D/G/B.x”的列的左侧(在本例中为H列) 目前,我能够根据标题文本搜索一列并将其移动到另一列位置,这并不完全是我想要实现的,而是我试图实现的目标: 以下是我当前的VBA: Sub Test() Application.ScreenUpdating = False Dim ws As Worksheet Dim starting_ws As Worksheet Set startin
Sub Test()
Application.ScreenUpdating = False
Dim ws As Worksheet
Dim starting_ws As Worksheet
Set starting_ws = ActiveSheet
For Each ws In Worksheets
ws.Activate
Dim search As Range
Set search = ws.Rows("1:1").Find("D/G/B", LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False)
If Not search Is Nothing Then
Application.CutCopyMode = False
search.EntireColumn.Cut
ws.Columns("H").Select
Selection.Insert Shift:=xlToRight
Application.CutCopyMode = False
End If
Next
Application.ScreenUpdating = True
End Sub
非常感谢您的帮助。您认为这是您想要的
Sub Test()
Application.ScreenUpdating = False
Dim ws As Worksheet
Dim starting_ws As Worksheet
Dim c As Long
Set starting_ws = ActiveSheet
For Each ws In Worksheets
Dim search As Range
Set search = ws.Rows("1:1").Find("D/G/B", LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False)
If Not search Is Nothing Then
c = ws.Cells(1, search.Column).End(xlToLeft).Column
If c < search.Column - 1 Then 'only move if not adjancent
ws.Columns(c).Cut search.Cells(1).Offset(, -1)
End If
End If
Next
Application.ScreenUpdating = True
End Sub
子测试()
Application.ScreenUpdating=False
将ws设置为工作表
将起始值作为工作表进行调整
尺寸c与长度相同
设置起始\u ws=ActiveSheet
对于工作表中的每个ws
模糊搜索范围
设置search=ws.Rows(“1:1”).Find(“D/G/B”,LookIn:=xlValues,LookAt:=xlPart,SearchOrder:=xlByColumns,SearchDirection:=xlNext,MatchCase:=False)
如果不是,那么搜索什么都不是
c=ws.Cells(1,search.Column).End(xlToLeft.Column)
如果c
很好,非常感谢。我认为“激活”在for循环中是必要的,那么我将删除这一行,很好,你指出了这一点。他们之间不一定有差距。然而,如果不是这样,它已经处于正确的位置。否则,我将只将“D/G/B.x”列向右移动一列。再次感谢你,很高兴它成功了。如果没有间隙,那么它将移动第一列,这样我可以添加一个If来避免这种情况。重新激活,一些阅读材料: