查找具有唯一值的列移动到第一列并对工作表进行排序

时间:2015-06-15 13:13:54

标签: excel vba excel-vba sorting

我有2个工作表,在不同的订单中具有相同的标题。标题是I.D,姓名,部门,销售,开始日期,结束日期和其他一些。

我的目标是搜索标题可能位于不同顺序的工作簿,找到具有唯一值的列(在本例中为ID),然后将此列移动到工作表中的A列并排序两个工作表中的其余标题/数据,因此布局是相同的。我的目标是在VBA中这样做。

目前,我手动对工作表进行排序,并将相关列复制到工作表的第一列,并检查单元格是否匹配。

painter->fillRect

1 个答案:

答案 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