동일한 위치의 다른 열에 동일한 값을 유지하는 Excel 정렬

동일한 위치의 다른 열에 동일한 값을 유지하는 Excel 정렬

다음과 같은 데이터 세트가 있다고 상상해보십시오.

A               B
AnthonyMorgan   EvelynThomas
JoePatterson    RussellRobinson
JohnAnderson    ChristopherMiller
CarolynMorris   RyanStewart
DorisKing       SarahPrice
AlanJohnson     MarilynHall
JonathanHall    EricCooper
AndreaPowell    GregorySimmons
PaulaCooper     JackRussell
AndrewPeterson  SeanEvans
JohnWilliams    JudyBell
LillianLewis    JohnWilliams
SteveRoberts    LillianLewis
MatthewGray     SteveRoberts
ChristinaClark  MatthewGray
                PeterAllen
                SharonHill
                MaryTurner
                DorisGonzales
                VictorWhite
                JoanFoster
                ChristinaClark
                RubyBryant
                RogerColeman
                JosephLong
                AndrewPeterson

A다른 열의 동일한 값이 함께 유지되도록 열별로 정렬하고 상상하고 싶습니다 . 최종 결과는 다음과 같습니다.

A                   B
AlanJohnson 
AndreaPowell    
AndrewPeterson      AndrewPeterson
AnthonyMorgan   
CarolynMorris   
ChristinaClark      ChristinaClark
                    ChristopherMiller
                    DorisGonzales
DorisKing   
                    EricCooper
                    EvelynThomas
                    GregorySimmons
                    JackRussell
                    JoanFoster
JoePatterson    
JohnAnderson    
JohnWilliams        JohnWilliams
JonathanHall    
                    JosephLong
                    JudyBell
LillianLewis        LillianLewis
                    MarilynHall
                    MaryTurner
MatthewGray         MatthewGray
PaulaCooper 
                    PeterAllen
                    RogerColeman
                    RubyBryant
                    RussellRobinson
                    RyanStewart
                    SarahPrice
                    SeanEvans
                    SharonHill
SteveRoberts        SteveRoberts
                    VictorWhite

어떤 아이디어?

답변1

다음 매크로를 사용해 보세요.

Sub Interleaver()
    Dim nA As Long, nB As Long
    Dim rc As Long, i As Long, j As Long

    rc = Rows.Count
    nA = Cells(rc, "A").End(xlUp).Row
    nB = Cells(rc, "B").End(xlUp).Row
    Range("A1:A" & nA).Copy Range("C1")
    Range("B1:B" & nB).Copy Range("C" & nA + 1)

    For i = 1 To nA + nB
        If i <= nA Then
            Cells(i, "D") = "A"
        Else
            Cells(i, "D") = "B"
        End If
    Next i

    Range("C1:D" & nA + nB).Sort Key1:=Range("C1"), Order1:=xlAscending, Header:=xlNo, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal

    Range("A1:A" & nA).Clear
    Range("B1:B" & nB).Clear
    j = 2

    If Range("D1").Value = "A" Then
        Cells(1, "A") = Cells(1, "C")
    Else
        Cells(1, "B") = Cells(1, "C")
    End If

    For i = 2 To nA + nB
        If Cells(i, "C") = Cells(i - 1, "C") Then
            j = j - 1
            Range("A" & j & ":B" & j) = Cells(i, "C")
            j = j + 1
        Else
            If Cells(i, "D").Value = "A" Then
                Cells(j, "A") = Cells(i, "C")
            Else
                Cells(j, "B") = Cells(i, "C")
            End If
            j = j + 1
        End If
    Next i
End Sub

다음이 생성됩니다.

여기에 이미지 설명을 입력하세요

답변2

나는 그것을 할 수있는 간단한 방법이 없다고 생각합니다. 다음을 시도해 보십시오:
- 원래 위치를 기억하는 한 범위에서 데이터를 병합합니다(예: 첫 번째 열을 새 시트에 복사하고 다음 열에 "1"을 채우고, 첫 번째 열 아래의 두 번째 열을 복사하고 두 번째 열에 "10"을 채웁니다. 이 데이터 세트).
- 피벗 테이블을 삽입합니다. 열 레이블은 첫 번째 열이어야 하고 두 번째 열의 합계를 요청해야 합니다(이제 이름이 한 열에만 발생한 경우 두 번째 열에 1 또는 10, 두 열 모두에 있는 경우 11에 고유한 값이 알파벳순으로 정렬되어 있습니다. ).
- 피벗 테이블의 데이터가 A5에서 시작한다고 가정하면 C5에 다음을 입력하고 =if(mod(b5,2)=1,a5,"")d5에 다음을 입력합니다.=if(b5>9,a5,"")

답변3

또 다른 작업 흐름은 다음과 같습니다. 귀하가 찾고 있는 기능을 수행하는 Excel 기능이 없기 때문에 이 작업은 수동으로 수행됩니다. 또 다른 옵션은 매크로 또는 VBA를 사용하여 아래 제안된 작업 흐름을 자동화하는 것입니다.

이미지 1은 초기 예제 데이터를 보여줍니다.

초기의

wach 열을 별도로 정렬하여 시작하세요. 정렬이 다른 열에 영향을 주지 않도록 유지하십시오. 프로세스를 돕기 위해 다른 열을 추가하고 B 열의 각 A 열 항목에 대해 일치하는 항목을 찾는 인덱스 일치 함수를 작성하십시오.

=INDEX($C$1:$C$10,MATCH(A2,$C$1:$C$10,0),1)

이미지 2는 이 단계의 결과를 보여줍니다.

인덱싱

이제 NA 값에 인접하지 않도록 B 열을 잘라내어 붙여넣습니다. 이 예에서는 아래에 있는 두 개의 셀입니다. 그런 다음 A열과 보조 열을 잘라내어 B열과 일치하도록 붙여넣습니다. 아래 이미지를 참조하세요:

반복

완료될 때까지 이 단계를 반복합니다. B열부터 시작하여 A열과 INDEX 열(보조 열)을 일치시키는 것을 기억하세요. 마지막으로 INDEX 열을 제거하면 완료됩니다.

거의 완료됨

완료!

답변4

실제로 요구하는 것은 두 열을 별도의 테이블로 처리하는 완전 외부 조인입니다.

내가 아는 한, 파워 쿼리 플러그인을 사용해도 기본 Excel에서는 이것이 불가능합니다.

~할 수 있다결과를 달성하다만약에더 긴 테이블은 더 짧은 테이블의 모든 항목을 포함하지만 예제에서는 그렇지 않다는 것을 보여줍니다.

당신이 할 수 있는 일은 두 개의 열을 추가한 다음 중복 제거하는 것입니다. 이는 충분히 쉽습니다. 원본 데이터에 동일한 이름의 복사본이 몇 개나 존재했는지 확인할 수 있도록 개수 열을 추가할 수도 있습니다. 그렇게 하고 싶다면 알려주세요.

업데이트: 예상한 대로 Microsoft Access를 사용하여 이 작업을 수행할 수 있습니다. 이렇게 하려면 먼저 두 열을 별도의 테이블로 구성해야 합니다. 그런 다음 테이블 사이에 왼쪽 외부 조인과 오른쪽 외부 조인이라는 두 개의 조인을 만들어야 합니다. 이러한 관계를 만든 후에는 간단한 쿼리를 수행하여 각 테이블에서 단일 열을 선택할 수 있습니다. 그게 다야.

원할 경우 원본 데이터를 Excel에 그대로 두고 두 열을 별도의 테이블로 분할하기만 하면 데이터에 연결할 수 있습니다.

관련 정보