VBA 코드
데이터 전처리
1) login account가 10회 미만인 고객의 name과 e-mail 추출
2) total purchase amount이 500000 이상인 고객의 이름과 이메일
3) age가 20~50 사이인 고객 중 물건 구매를 4번 이하로 한 고객의 name과 e-mail 추출
Sub ExtractData()는 매크로의 시작을 알리는 코드입니다.
Dim은 변수를 선언하는 키워드로, i, age, purchase_count, name, email, newRow를 변수로 선언합니다. 변수 타입은 Integer나 String으로 지정됩니다.
Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = "Extracted Data"는 새로운 시트를 생성합니다. After 파라미터는 새로운 시트가 현재 엑셀 파일에서 가장 마지막에 위치하도록 지정합니다.
With Worksheets("Extracted Data")는 새로 생성된 시트를 참조합니다. 이후에 .Cells(1, 1).Value = "name"과 .Cells(1, 2).Value = "e-mail" 코드를 사용하여, 새로 생성된 시트의 첫 번째 행의 첫 번째 열과 두 번째 열에 "name"과 "e-mail"이라는 컬럼 이름을 추가합니다.
For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row는 첫 번째 행은 컬럼 이름이 위치하므로, 두 번째 행부터 데이터를 추출하기 위한 반복문입니다.
age = Cells(i, 2).Value는 i 번째 행의 2 번째 열(즉, age)의 값을 가져옵니다.
purchase_count = Cells(i, 5).Value는 i 번째 행의 5 번째 열(즉, purchase count)의 값을 가져옵니다.
If age >= 20 And age <= 50 And purchase_count <= 4 Then는 age가 20~50 사이이고 purchase count가 4번 이하인 조건을 검사합니다.
name = Cells(i, 1).Value는 i 번째 행의 1 번째 열(즉, name)의 값을 가져옵니다.
email = Cells(i, 3).Value는 i 번째 행의 3 번째 열(즉, email)의 값을 가져옵니다.
With Worksheets("Extracted Data")는 새로 생성된 시트를 참조합니다. 이후에 .Cells(newRow, 1).Value = name과 .Cells(newRow, 2).Value = email 코드를 사용하여, 새로 생성된 시트의 newRow번째 행의 첫 번째 열과 두 번째 열에 name과 email 값을 추가합니다.
newRow = newRow + 1은 데이터를 추가할 때마다 newRow 값을 1 증가시킵니다.
Next i는 For 반복문을 마칩니다.
End Sub는 매크로를 종료합니다.
따라서, 위 코드는 먼저 "Extracted Data"라는 이름의 새로운 시트를 생성합니다. 그 다음, 첫 번째 행에 "name"과 "e-mail"이라는 컬럼 이름을 추가하고, 두 번째 행부터 마지막 행까지 반복문을 수행합니다. 이때, age가 20~50 사이이고 purchase count가 4번 이하인 조건을 만족하는 행만 추출하여, name과 email 값을 새로 생성된 시트에 추가합니다.
매크로를 실행하려면, VBA 에디터에서 ExtractData 함수를 선택한 후, F5를 누르면 됩니다. 실행 결과, 새로운 시트가 생성되며, 조건에 맞는 고객의 name과 e-mail이 추려진 것을 확인할 수 있습니다.
