A 열의 순서를 유지하면서 B 열을 정렬합니다.

A 열의 순서를 유지하면서 B 열을 정렬합니다.

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 을 기준으로 정렬합니다 .1C1CC2C3C4C5C6C7CB

답변2

빠르고 더러운:-

  1. A열의 내용을 메모장에 복사한 후 클립보드에 다시 복사합니다.
  2. 두 열을 모두 선택합니다.
  3. 정렬 기능을 선택하고 "사용자 정의 목록" 순서를 사용하여 열 A를 정렬합니다.
  4. 클립보드의 데이터를 사용자 정의 목록에 입력합니다.
  5. 정렬 기능에 수준을 추가한 다음 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

서브 끝

관련 정보