Excel 테이블이 있는데, 시트에 "CR"값이있는 모든 행 (헤더 행 제외)을 원합니다 (가능한 경우 수식 제외). A 열 수식))은 파일이 저장되기 전에 B 열 (name = TEAM), C (name = BUILDING) 및 마지막 D (name = DATE_MAJ)에 의해 먼저 정렬됩니다.여러 열의 Excel 정렬 VBA
나는 VBA의 절대적인 멍청한 놈이다. 그래서 나는 포럼에서 좌, 우로 찾아내는 것을 시도하고있다. 주변 검색에서, 나는 엑셀 VBA 개체 '통합 문서'에서이 코드를 시도했지만 오류 제공합니다
이Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'Setup column names
Col1name = "SECTION"
Col2name = "BATIMENT"
Col3name = "DATE_MAJ"
'Find cols
For Each cell In Range("A1:" & Range("A1").End(xlToRight).Address)
If cell.Value = Col1name Then
Col1 = cell.Column
End If
If cell.Value = Col2name Then
Col2 = cell.Column
End If
If cell.Value = Col3name Then
Col3 = cell.Column
End If
Next
'Below two line:- if they are blank e.g. column not found it will error so a small bit of error handling
If Col1 = "" Then Exit Sub
If Col2 = "" Then Exit Sub
If Col3 = "" Then Exit Sub
'Find last row - dynamic part
lastrow = ActiveSheet.Range("A100000").End(xlUp).Row
'Convert col numer to name
Col1 = Split(Cells(1, Col1).Address(True, False), "$")
Col2 = Split(Cells(1, Col2).Address(True, False), "$")
Col3 = Split(Cells(1, Col3).Address(True, False), "$")
'Sort
With ActiveSheet.Sort
.SortFields.Clear
.SortFields.Add Key:=Range(Col1(0) & "2:" & Col1(0) & lastrow) _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.SortFields.Add Key:=Range(Col2(0) & "2:" & Col2(0) & lastrow) _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.SortFields.Add Key:=Range(Col3(0) & "2:" & Col3(0) & lastrow) _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.SetRange Range("A1:K" & lastrow)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
내가 코드 권리를 얻기에 어떤 도움을 감사하게 될 거라고합니다. 아래는 Excel 파일에 대한 링크입니다 (위의 코드는 작동하지 않았으므로 제거했습니다). 당신은 단지 세 개의 정렬 열을 가지고 있기 때문에
어떤 오류가 발생합니까? 어떤 라인이 그것을 던집니까? 또한 연결된 예제에는 "BATIMENT"와 "DATE_MAJ"둘 다 이름이 지정된 열 머리글이 없습니다. – user3598756
열 C와 D의 열 이름은 "BATIMENT"와 "DATE_MAJ"입니다. 그들의 헤더는 실제로 "BUILDING"과 "DATE UPDATE"입니다. 그게 중요합니까? – Antoon
내가 얻는 오류는 '컴파일 오류 : 변수가 정의되지 않음'이며 'Col1name'이 VBA 코드에서 선택되었습니다. – Antoon