如何按列标题名称重新排列excel列
如何按列标题名称重新排列列。 我需要每周处理一份报告,原始工作表有23列。我提取了其中的一部分作为示例 原始列顺序:如何按列标题名称重新排列excel列,excel,vba,Excel,Vba,如何按列标题名称重新排列列。 我需要每周处理一份报告,原始工作表有23列。我提取了其中的一部分作为示例 原始列顺序:数量付款条款合同号等 所需列顺序:合同号、付款条件、数量等 你知道如何用VBA代码自动重新排列列吗? 非常感谢。这对您有什么好处?我试着只用了四个专栏,它对我很有效 Sub rearrange_Columns() Dim correctOrder() As Variant Dim lastCol As Long Dim headerRng As Range, cel As Rang
数量付款条款合同号等
所需列顺序:
合同号、付款条件、数量等
你知道如何用VBA代码自动重新排列列吗?
非常感谢。这对您有什么好处?我试着只用了四个专栏,它对我很有效
Sub rearrange_Columns()
Dim correctOrder() As Variant
Dim lastCol As Long
Dim headerRng As Range, cel As Range
Dim mainWS As Worksheet
Set mainWS = ActiveWorkbook.Worksheets("Sheet1")
' Edit this to be the correct order you need
correctOrder() = Array("Column A", "Column B", "Column C", "Column D")
' Now, we know that the number of headers you have to rearrange are `UBound(CorrectOrder)+1`
With mainWS
lastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
Set headerRng = .Range(.Cells(1, 1), .Cells(1, lastCol))
End With
Dim newWS As Worksheet
Set newWS = ActiveWorkbook.Sheets.Add
newWS.Name = "Rearranged Sheet"
Dim col As Long
With newWS
For col = 1 To lastCol
For Each cel In headerRng
If cel.Value = correctOrder(col - 1) Then
mainWS.Columns(cel.Column).Copy .Columns(col)
Exit For
End If
Next cel
Next col
End With
End Sub
注意:没有真正的错误处理,因此如果需要对标题进行TRIM()
ed或检查错误信息,则需要添加这样做的内容
您是否希望按字母顺序排列列标题?如果是这样,请使用排序功能。最好使用表。在数据区域中插入一个表,然后第一行就是标题。通过表的内置函数,您可以仅使用标题选择整个列,例如
Activesheet.listobjects(“table1”).listcolumns(“mycolumn”).range
如果您共享一个代码并显示您试图执行的操作,我们可以更具体地帮助您。我的抽象示例可能有点误导,总共有23列,我需要按所需的顺序排列,而不是按字母顺序。@Max-Yay!很高兴听到这有帮助。(您可以通过单击帖子左侧上/下箭头下方的复选标记将其标记为答案)