
Excel에는 2개의 열이 있습니다. 첫 번째 항목의 (사용자 정의) 순서를 유지하면서 두 번째 항목을 알파벳 순서로 정렬하고 싶습니다(동등성이 첫 번째 열에만 기반을 두는 std::stable_sort를 생각해 보세요). 예:
dsf k
www d
www a
azd q
azd e
azd b
되어야 한다
dsf k
www a
www d
azd b
azd e
azd q
정렬 마법사에는 "현재 순서 유지" 옵션이 없는 것 같습니다. 맞춤 순서를 정의할 수 있지만 수천 가지가 넘는 다양한 요소가 있습니다. 그렇게 하는 것은 정말 고통스러운 일이며 이 맞춤 주문은 언제든지 변경될 수 있습니다.
답변1
C
데이터가 행 2에서 시작하고 해당 열을 "도우미 열"로 사용할 수 있다고 가정하겠습니다 . 놓다
=IF(A1=A2, C1, C1+1)
셀에 C2
. (열을 C
사용할 수 없는 경우 열을 사용할 수 있는 열을 사용하십시오. 데이터가 행 1에서 시작하는 경우 빈 행을 삽입하거나 (여전히) 위 내용을 cell 에 넣고 cell 에 C2
넣으십시오 .) 아래로 드래그/채우세요. 이(열 )은 이제 맞춤 주문을 "문서화"합니다. 예: = 1, = = 2 및 = = = 3. 이제 Column 및 Column 을 기준으로 정렬합니다 .1
C1
C
C2
C3
C4
C5
C6
C7
C
B
답변2
빠르고 더러운:-
- A열의 내용을 메모장에 복사한 후 클립보드에 다시 복사합니다.
- 두 열을 모두 선택합니다.
- 정렬 기능을 선택하고 "사용자 정의 목록" 순서를 사용하여 열 A를 정렬합니다.
- 클립보드의 데이터를 사용자 정의 목록에 입력합니다.
- 정렬 기능에 수준을 추가한 다음 B열("가장 작은 것부터 가장 큰 것까지")을 기준으로 정렬합니다.
답변3
가장 좋은 방법은 맞춤 주문을 사용하는 것입니다. 자주 업데이트할 필요가 없다면 업데이트를 통해 FILE>OPTIONS>ADVANCED>EDIT CUSTOM LISTS...
전체 범위를 가져올 수 있습니다. 그런 다음 정렬할 때 사용하세요.
VBA 솔루션은 다음과 같습니다.
하위 정렬() iCustListNum을 정수로 희미하게 표시 iCustListNum = Application.CustomListCount + 1 Application.AddCustomList ListArray:=Range("A2:A100") 오류 발생 시 GoTo 오류: '목록을 정렬하세요 Range("A1:B100").sort Key1:=Range("A1"), Order1:=xlAscending, OrderCustom:=iCustListNum, _ Key2:=범위("B1"), Order2:=xlAscending, 헤더:=xlYes, _ MatchCase:=False, 방향:=xlTopToBottom '청소하다 오류: Application.DeleteCustomList ListNum:=iCustListNum 서브 끝