
여러 행에 데이터가 있는 워크시트가 있는데 이 정보를 축소하여 위로 이동하고 단일 열을 주요 참조 지점으로 사용하여 null 공백을 제거해야 합니다.
예를 들어 A 열에 a와 CB 값이 포함된 테이블이 있습니다. B, C, D 열에도 데이터가 있지만 내 행에는 2개의 열에 대한 데이터만 포함되고 다른 열은 비어 있습니다. 첫 번째 열이 일치하면 공백을 채워 행의 모든 값을 위쪽으로 이동해야 합니다. 열을 위로 이동한 후 마지막 행에 null 데이터가 있을 수 있으므로 데이터를 위로 이동하면 됩니다.
내가하려는 일은 다음과 같습니다. 나열된 열 및 행 머리글이 없습니다.
a 1 null null
a 2 null null
a null 1 null
a null 2 null
a null null 1
a null null 2
a null null 3
B 1 null null
B 2 null null
B null 1 null
B null 2 null
B null null 1
B null null 2
B null null 3
C 1 null null
C 2 null null
C null 1 null
C null 2 null
C null 3 null
C null null 1
C null null 2
데이터를 통합하고 이동하여 이를 만들어야 합니다.
a 1 1 1
a 2 2 2
a null null 3
B 1 1 1
B 2 2 2
B null null 3
C 1 1 1
C 2 2 2
C null 3 null
누구든지 도와줄 수 있나요?
답변1
로 시작:
매크로 실행 MAIN()
:
Dim DidSomething As Boolean
Sub MAIN()
DidSomething = True
While DidSomething
Call KompactData
Wend
Call RowKiller
End Sub
Sub KompactData()
Dim N As Long, i As Long
Dim j As Long, v As Variant
N = Cells(Rows.Count, "A").End(xlUp).Row
DidSomething = False
For j = 2 To 4
For i = 2 To N
v = Cells(i, j).Value
If (v <> "") And (Cells(i - 1, j) = "") And (Cells(i, 1) = Cells(i - 1, 1)) Then
Cells(i - 1, j) = v
Cells(i, j).ClearContents
DidSomething = True
End If
Next i
Next j
End Sub
Sub RowKiller()
Dim N As Long, i As Long, r As Range
N = Cells(Rows.Count, "A").End(xlUp).Row
With Application.WorksheetFunction
For i = N To 1 Step -1
Set r = Range(Cells(i, 1), Cells(i, 4))
If .CountBlank(r) = 3 Then
r.Delete Shift:=xlUp
End If
Next i
End With
End Sub
생산할 것입니다: