728x90

병합된 셀에서 원하는 데이터를 찾아서 가져오는 코드를 만들어봤다.



MergeArea_ex-01.xlsm


Sub Macro()
'// 엑셀에서 Alt + F11 키 누르면 뜨는 창에서 메뉴 [삽입] - [모듈] 선택
'// 이 코드를 붙여넣기
'// F5키를 누르면 실행됨
    Dim rngC As Range
    On Error Resume Next
    For Each rngC In
Range([B2], Cells(Rows.Count, "B").End(3)) '// 구간 범위 설정

        If rngC.MergeCells And Not IsEmpty(rngC) Then
            Debug.Print "이름 : " & rngC.Text   '// 직접 실행창(Ctrl + G) 에서 출력되는 내용
            If rngC.Text = "순이" Then   '// 특정셀을 기록해야 하는데 직접 이름을 적어봤음
                MsgBox rngC.Offset(, 1).Offset(1)
            End If
        End If
    Next rngC
End Sub

'// 사용자가 만들어서 사용하는 함수
Function Find_Data(ByVal Name As String) As String
'// 엑셀에서 Alt + F11 키 누르면 뜨는 창에서 메뉴 [삽입] - [모듈] 선택
'// 이 코드를 붙여넣기
    Dim rngC As Range
    On Error Resume Next
    For Each rngC In Range([B2], Cells(Rows.Count, "B").End(3)) '// 구간 범위 설정
        '//B2셀부터 B열의 값이 있는 마지막 열까지
        If rngC.MergeCells And Not IsEmpty(rngC) Then
            Debug.Print "이름 : " & rngC.Text   '// 직접 실행창(Ctrl + G) 에서 출력되는 내용
            If rngC.Text = Name Then
                Find_Data = rngC.Offset(, 1).Offset(1)
            End If
        End If
    Next rngC
End Function
 



참조할 구간범위 및 몇번째 자료를 가져올 것인가를 정하는 것도 한번 작성해봤다.

Function Find_Lookup(ByVal Name As String, ByVal rngDB As Range, ByVal n As Integer) As String
'// 엑셀에서 Alt + F11 키 누르면 뜨는 창에서 메뉴 [삽입] - [모듈] 선택
'// 이 코드를 붙여넣기
    Dim rngC As Range
    On Error Resume Next
    For Each rngC In rngDB   '// 구간 범위 설정
        If rngC.MergeCells And Not IsEmpty(rngC) Then
            If rngC.Text = Name Then
                Find_Lookup = rngC.Offset(, n).Offset(1)
            End If
        End If
    Next rngC
End Function


* 첨부파일에 코드가 다 들어 있습니다.

728x90
블로그 이미지

Link2Me

,