행 정렬: 날짜 및 작업 정보가 함께 그룹화된 6개의 거래

행 정렬: 날짜 및 작업 정보가 함께 그룹화된 6개의 거래

스프레드시트의 거래 정보를 날짜 오름차순으로 정리해야 합니다. 각 행은 한 사람과 해당 기록의 마지막 6개 거래를 나타냅니다. 문제는 데이터베이스가 마지막 6개의 트랜잭션을 내보내는 동안 순서대로 수행하지 않기 때문에 Excel에서 수동으로 수행해야 한다는 것입니다.

거래 날짜와 만료 날짜는 "선물임" 및 "작업" 데이터와 연결되어 있어야 하므로 이 애플리케이션에서는 행 정렬 기능을 사용할 수 없습니다. 이 네 개의 열은 그룹으로 함께 유지되어야 합니다.

첨부된 스크린샷에서는 열을 어떻게 그룹화하고 빨간색으로 강조 표시해야 하는지 보여주기 위해 색상을 사용했습니다. 데이터가 올바른 순서로 되어 있는 경우 가장 먼저 와야 하는 트랜잭션입니다. 이를 통해 문제("첫 번째 항목"은 개인마다 다른 열에 있음)와 내 목표(각 열 그룹이 날짜 오름차순으로 행별로 정렬됨)에 대한 더 명확한 표시를 제공할 수 있기를 바랍니다.

메모가 포함된 스크린샷

답변1

이 코드를 사용해 보세요. 이를 VB 편집기 창에 붙여넣고 실행합니다(자세한 도움말은 Google 'vba 코드 실행 방법' 참조). 이는 전혀 효율적이지는 않지만 작동해야 합니다.

Sub Some_Sorting_Procedure()
    Dim r As Long, last_row As Long
    Dim i As Long, j As Long
    Dim arr As Variant

    Application.ScreenUpdating = False

    With ActiveSheet
        last_row = .Cells(.Rows.Count, 1).End(xlUp).Row
        For r = 2 To last_row
            For i = 3 To 23 Step 4
                For j = i + 4 To 23 Step 4
                    If .Cells(r, i).Value > .Cells(r, j).Value Then
                        arr = .Cells(r, j).Resize(, 4).Value
                        .Cells(r, i).Resize(, 4).Cut .Cells(r, j)
                        .Cells(r, i).Resize(, 4).Value = arr
                    End If
                Next j
            Next i
        Next r
    End With
End Sub

편집하다

이는 데이터가 cell 에서 시작 A1하고 첫 번째 열에 빈 셀이 없다고 가정합니다. 하드 코딩된 값은 23트랜잭션이 6개만 있을 것이라고 언급했기 때문입니다. 각 추가 거래마다 이 숫자를 4씩 늘려야 합니다.

관련 정보