我有2个工作表,在不同的订单中具有相同的标题。标题是I.D,姓名,部门,销售,开始日期,结束日期和其他一些。
我的目标是搜索标题可能位于不同顺序的工作簿,找到具有唯一值的列(在本例中为ID),然后将此列移动到工作表中的A列并排序两个工作表中的其余标题/数据,因此布局是相同的。我的目标是在VBA中这样做。
目前,我手动对工作表进行排序,并将相关列复制到工作表的第一列,并检查单元格是否匹配。
painter->fillRect
答案 0 :(得分:0)
查找并移动“ID”列,如第1列
Sub movecolumn()
Dim sht As Worksheet
Dim keySrc As String
Dim lastcol As Long, cutCol As Long
Dim arrcol As Variant
Set sht = ThisWorkbook.Worksheets("Sheet1")
keySrc = "ID"
lastcol = sht.Cells(1, sht.Columns.Count).End(xlToLeft).Column 'find the last Headers columns
arrcol = Range(Cells(1, 1), Cells(1, lastcol)) 'Add Headers items to array
If Not IsError(Application.Match(keySrc, arrcol, False)) Then ' Check i the keysrc are into array
cutCol = Application.Match(keySrc, arrcol, False) 'find the "ID" positiono into array
If cutCol > 1 Then 'If "ID" column Is not already the first
Columns(cutCol).Select ' select "ID" column
Selection.Cut
Columns("A:A").Select
Selection.Insert Shift:=xlToRight
End If
Else
MsgBox "the column " & keySrc & " not exist", vbInformation
End If
Range("A2").CurrentRegion.Sort key1:=Range("a2"), order1:=xlAscending, Header:=xlGuess
End Sub