오늘은 지금까지 구독자 분들이 질문한 내용 중에 많이 했던 내용을 구현했습니다. 요지는 매크로를 이용해서 다른 셀이나 워크시트에 있는 내용들을 잘라서 붙이는 방법입니다. 여기에 덧붙여 동일한 코드에 데이터를 찾아 해당하는 값을 매칭하는 것도 포함 시켰습니다. 정리할 데이터가 많을 경우 아주 유용한 샘플 코드입니다.
▼ 오늘 구현할 내용은 그림에 표시한 것과 같습니다. C 데이터의 코드값을 A 데이터 코드값과 비교해 동일한 데이터가 있다면 수량을 복사하는 것이죠.
▼ 초보자님들을 위해서 프로그램 작성법의 기초부터 알려 드리겠습니다. 먼저 어떻게 프로그램을 구현할지 글로 써서 단계별로 표현을 해야 합니다. 예를 들어 아래 구현할 내용을 단계별로 구분해 보겠습니다. 내용은 사람들 마다 자기만의 방식이 있기 때문에 같을 수 없습니다. 중요한 것은 무작정 코드를 짜겠다고 덤비지 말고 어떤 단계를 거쳐야 하는지 글로 써야 한다는 것입니다.
1. A 열의 코드 값들을 메모리에 저장한다.
2. A 열의 코드 값만큼 반복한다.
2.1. A 열 코드 값 중에서 C 열에 있는지 찾아 수량 값을 변수에 저장한다.
2.2. 찾은 값이 있다면 B 열에 저장한다.
2.3. 변수를 초기화 한다.
▼ 그럼 각 단계별로 소스가 어떻게 구현되었는지 보겠습니다.
1. A 열의 코드 값들을 메모리에 저장한다.
Sheets("Sheet1").Activate Set rngList = ActiveSheet.Range("D3:D8") |
2. A 열의 코드 값만큼 반복한다.
For i = 3 To WorksheetFunction.CountA(Range("A:A")) Next i |
2.1. A 열 코드 값 중에서 C 열에 있는지 찾아 수량 값을 변수에 저장한다.
Set rngValue = rngList.Find(Range("A1").Offset(i, 0)) If Not rngValue Is Nothing Then strPrice = rngValue.End(2) ' 바로 옆에 수량 데이터 가져옴 End If |
2.2. 찾은 값이 있다면 B 열에 저장한다.
Range("B1").Offset(i, 0) = strPrice |
2.3. 변수를 초기화 한다.
strPrice = "" ' 데이터 초기화 |
▼ 위에서 작성한 전체를 합친 소스는 다음과 같습니다. 매크로 함수를 만들고 코드를 복사해서 넣습니다.
Sub move_data() Dim rngList As Range Dim rngValue As Range Dim strPrice As String Dim i As Integer '' 데이터를 선택한다. Sheets("Sheet1").Activate Set rngList = ActiveSheet.Range("D3:D8") For i = 3 To WorksheetFunction.CountA(Range("A:A")) Set rngValue = rngList.Find(Range("A1").Offset(i, 0)) If Not rngValue Is Nothing Then strPrice = rngValue.End(2) ' 바로 옆에 수량 데이터 가져옴 End If Range("B1").Offset(i, 0) = strPrice strPrice = "" ' 데이터 초기화 Next i End Sub |
매크로를 실행한 결과 원하는 대로 같은 코드값에 수량이 복사되었습니다. 이상으로 VBA 값 복사에 대해 알아 보았습니다.
※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※ ▶ 엑셀(Excel) VBA - 각종 코드와 소스들을 쉽게 알아내기 ▶ 엑셀 Excel 매크로 실행과 소스 편집하기 ▶ 엑셀 VBA 매크로 디버깅, 디버그 코드 분석하기 ▶ 엑셀 VBA 매크로 실행 버튼으로 코드 실행하기 ▶ 엑셀 Excel 매크로 소스 디버깅으로 결과 확인하기 |
'엑셀(Excel) > VBA' 카테고리의 다른 글
엑셀 VBA 날짜 관련 함수, 개체 사용하는 방법 (0) | 2024.06.02 |
---|---|
엑셀 VBA 중복 데이터 재귀 호출과 반복문 사용해서 삭제하기 (0) | 2024.06.02 |
엑셀 VBA 문자열, 텍스트 숫자를 문자열 숫자로 변경하기 (0) | 2024.06.01 |
엑셀 VBA 문자열 글자 하나씩 추출하기 (0) | 2024.05.31 |
엑셀 VBA 배열 처리를 위한 Array 객체 사용하는 방법 (0) | 2024.05.27 |
엑셀 VBA 옵션 버튼 OptionButton 컨트롤 사용하기 (0) | 2024.05.26 |
엑셀 VBA 매크로 실행 버튼으로 코드 실행하기 (2) | 2024.05.22 |
엑셀 VBA 카메라 기능을 매크로로 작성하기 (1) | 2024.05.20 |