엑셀/VBA

VBA-DATA 조건으로 나머지 데이터값 가져오기

gongdol 2024. 2. 3. 11:10
300x250

1. 예제파일

 1) 빈칸은 띄어쓰기로 들어가있는 파일이다.

 2) DATA1 기준으로 4000 ->0 으로 갈때 나머지 데이터2,3의 값을 정리한다. 

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
Sub CHECKTT()
    Dim dataname(3As String '배열정의
    dataname(1= "data1"
    dataname(2= "data2"
    dataname(3= "data3"
    
    Dim datanum(3As Integer
    
    last_column = Cells(7, Columns.Count).End(2).Column ' 마지막 열 찾기
    last_row = Cells(Rows.Count, 1).End(3).Row
    posi = 200 + 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
                Cells(ii, posi).Value = dataname(ii)
                Exit For 'for문 중간에 나가기
            End If
        Next
    Next
        
    data_standard = datanum(1'기준데이터 설정
    
    k = 2
    
    For i = 10 To last_row
    
        If Cells(i, data_standard).Value = " " Then '데이터 띄어쓰기 있는 빈칸이면 스킵한다.
            Exit For
        End If
        
        If (CDbl(Cells(i, data_standard).Value) - CDbl(Cells(i - 1, data_standard).Value)) < -3000 Then
            Time_ = CDbl(Cells(i, data_standard - 1).Value)
            For j = 1 To UBound(dataname, 1)
                For ik = 11 To last_row
                    If CDbl(Cells(ik, datanum(j) - 1).Value) > Time_ Then
                        Cells(j, posi + k - 1).Value = Cells(ik, datanum(j)).Value
                        Exit For
                    End If
                    
                Next
            Next
            k = k + 1
        End If
        
    Next
        
    
    MsgBox ("완료")
    
    
    
    
End Sub
 
cs

 

 

3. 결과

  -. 원하는 데이터를 가져왔다. 

300x250