엑셀/VBA

VBA-데이터 조건으로 데이터 잘라서 정리하기

gongdol 2024. 2. 29. 23:29
300x250

1. 예제파일 작성

   1) 노란색 기준으로 e1, e3 데이터 정리하기 

 

2. 코드작성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
Sub CHECKTT()
    Dim dataname(3As String '배열정의
    dataname(1= "e2"
    dataname(2= "e1"
    dataname(3= "e3"
    
    Dim datanum(3As Integer
    
    last_column = Cells(7, Columns.Count).End(2).Column ' 마지막 열 찾기
    last_row = Cells(Rows.Count, 1).End(3).Row
    posi = 6 + UBound(dataname, 1)
    
    For ii = 1 To UBound(dataname, 1)
        For fi = 1 To last_column
            If Cells(7, fi) = dataname(ii) Then
                datanum(ii) = fi
                Exit For 'for문 중간에 나가기
            End If
        Next
    Next
        
    data_standard = datanum(1'기준데이터 설정
    
    k = 7 '데이터 시작 행
    Condition = k
    kk = 0 '열
    
    For j = 2 To UBound(dataname, 1)
        For i = 8 To last_row
        
            If Cells(i, data_standard).Value = " " Then '데이터 띄어쓰기 있는 빈칸이면 스킵한다.
                Exit For
            End If
            
            If (CDbl(Cells(i, data_standard).Value)) = 0 Then
                'k = k + 2 ' 데이터 2개씩
                k = k + 1 ' 데이터 1개씩
                kk = 0
                'basedata = Cells(i, datanum(j) - 1).Value
            End If
            
            Cells(k, posi).Value = dataname(j)
            kk = kk + 1
            If k > Condition Then
                Cells(k, posi + kk).Value = Cells(i, datanum(j)).Value
                'Cells(k + 1, posi + kk).Value = Cells(i, datanum(j) - 1).Value - basedata
            End If
        Next
    Next
    
    MsgBox ("완료")
    
    
    
    
End Sub
 
 
cs

 

 

3. 결과

300x250