VBA 를 이용해서 엑셀 데이터 중 원하는 값을 찾아 몇 번 줄에 있는지 알려 주는 코드를 만들어 보겠습니다. 시트에서 실행은 양식 컨트롤의 버튼을 이용할 것입니다. 소스는 버튼을 클릭하면 지정한 매크로를 실행해서 찾는 내용이 몇 번 행에 있는지 팝업창으로 알려줄 것입니다.
▼ 프로그램에 쓰이는 컨트롤 목록은 [개발 도구] 탭에 있습니다. 컨트롤 그룹의 삽입 리본 메뉴를 선택하시면 양식 컨트롤에 [버튼] 을 볼 수 있습니다.
▼ 버튼을 클릭해서 엑셀 시트에 추가하면 [매크로 지정] 팝업창이 뜨게 됩니다. 매크로 지정 팝업창에서 매크로 이름을 넣고 [새로 만들기]를 클릭합니다.
※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※ ▶ 엑셀 VBA 다른 셀에 일치하는 코드 값에 데이터 찾아 추가하기 ▶ 엑셀 VBA 마지막 행과 열의 수 찾기 ▶ 엑셀 VBA 시트에서 데이터 셀 영역 구하기 ▶ 엑셀 VBA – 매크로 이용해서 특정 조건의 데이터를 삭제하고 싶을 때 ▶ 엑셀 VBA 입력된 값 형식 확인 Information 관련 함수 모음 |
▼ 매크로 지정 팝업창에서 [새로 만들기] 버튼을 클릭하면 VBA 에디터에 매크로 이름에 해당하는 함수가 자동으로 생깁니다. 먼저 함수 내에서 데이터가 들어가 있는 셀이 몇 개 인지 체크하는 소스를 만듭니다. 셀을 내용을 하나씩 체크하기 위해 Do ... Loop Until 반복문을 사용하였고 마지막에 값이 없을 때 까지 반복한 후 몇 개가 있는지 메시지 박스로 알려줍니다.
Sub SearchName()
Dim row As Integer
Dim name As String
row = 0
Do
DoEvents
row = row + 1
name = ActiveSheet.UsedRange.Range("A" & row)
Loop Until name = ""
MsgBox row - 1
End Sub
▼ 아래 그림처럼 [찾기] 버튼을 클릭해서 SearchName() 함수를 실행하면 A 열에 있는 이름이 몇 개 인지 알려줍니다.
▼ 다음은 위에서 만든 소스에다 [이름 입력]칸에 찾고 싶은 이름을 입력하고 찾기를 누르면 몇 번째 셀에 있는 찾을 수 있도록 소스를 추가해 보겠습니다. Do Loop Until 반복문을 돌면서 입력한 이름값인 “C2” 와 각 셀의 값을 비교해서 해당하는 값이 맞다면 몇 번째인지 searchCount 변수에 저장합니다. 이 값이 찾고자 하는 이름이 있는 행 값입니다. InStr() 함수는 두 번째 인수로 들어간 findName 값이 있으면 1 이상을 리턴하게 됩니다.
Sub SearchName()
Dim row, searchCount As Integer
Dim name As String
row = 0
searchCount = 0
findName = ActiveSheet.UsedRange.Range("C2")
If findName = "" Then
MsgBox "찾을 이름을 입력해 주세요!!" Exit Sub
End If
Do
DoEvents
row = row + 1
name = ActiveSheet.UsedRange.Range("A" & row)
If InStr(name, findName) > 0 Then
searchCount = row
End If
Loop Until name = ""
MsgBox findName & " 는 " & searchCount & " 번째 셀에 있습니다."
End Sub
▼ 아래 그림처럼 찾을 이름을 입력하고 [찾기] 버튼을 누르시면 몇 번째 행에 이름이 있는지 알려 주게 됩니다.
※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※ ▶ 엑셀 VBA 다른 셀에 일치하는 코드 값에 데이터 찾아 추가하기 ▶ 엑셀 VBA 마지막 행과 열의 수 찾기 ▶ 엑셀 VBA 시트에서 데이터 셀 영역 구하기 ▶ 엑셀 VBA – 매크로 이용해서 특정 조건의 데이터를 삭제하고 싶을 때 ▶ 엑셀 VBA 입력된 값 형식 확인 Information 관련 함수 모음 |
'엑셀(Excel) > VBA' 카테고리의 다른 글
엑셀 VBA 반환한 배열 데이터 셀에 표현하기 (0) | 2023.06.10 |
---|---|
엑셀 VBA On Error GoTo 반복문에서 에러 거르기 (0) | 2023.06.09 |
엑셀 VBA 배열의 크기를 알아 내기 (0) | 2023.05.29 |
엑셀 VBA 반복문 Do Until 사용하기 (0) | 2023.05.28 |
엑셀 VBA 리스트 멀티 선택해서 추가 삭제하기 (0) | 2023.03.25 |
엑셀 VBA 반복문 이용 컨트롤 한번에 제어하기 (0) | 2023.03.25 |
엑셀 VBA Option Explicit 문 변수선언 에러 적용하기 (1) | 2023.03.20 |
엑셀 VBA 모듈 소스 다른 통합 문서에 복사하기 (0) | 2023.03.17 |