<Excel VBA> 테이블에서 데이터를 추출하여 다른 시트에 테이블 작성

개요


이 문서에서는 Excel 테이블에서 지정된 키 행을 추출하고 별도의 시트에 테이블을 만드는 매크로 처리 VBA 소스 코드를 게시합니다.

필요한 시트


이 문서에서는 소스 코드 앞에 매크로를 실행하는 데 필요한 Excel 시트를 간략하게 설명합니다.
우선 추출원이 되는 표입니다.
화상에서는 아래가 끊어지고 있습니다만, 47 도도부현의 도도부현청 소재지, 시·정·마을 각각의 수를 표로 하고 있습니다.

①「도도부현 일람」시트

계속해서, 키가 되는 「코드」만을 기재한 시트입니다.
특정 행만 추출할 수 있도록 필터 기능을 사용하고 있습니다.

②「키(코드)」시트

추출한 행에서 테이블을 작성하는 시트입니다.
실행 버튼을 클릭하여 매크로를 실행하고 테이블을 만듭니다.

③「추출 결과」 시트

소스 코드


①의 표로부터 ②로 지정한 행만을 추출해, ③에 표를 작성한다고 하는 처리 내용입니다(시트를 번호로 표기).
Sub Prefectures()

Dim ws_pref As Worksheet: Set ws_pref = Worksheets("都道府県一覧")
Dim ws_key As Worksheet: Set ws_key = Worksheets("キー(コード)")
Dim ws_result As Worksheet: Set ws_result = Worksheets("抽出結果")

With ws_key
    .Range("a1").CurrentRegion.SpecialCells(xlVisible).Copy ws_result.Range("a1")
    If .FilterMode = True Then
        .ShowAllData
    End If
End With

Dim arr As Variant
With ws_result
    arr = .Range(.Range("a2"), .Cells(Rows.Count, 1).End(xlUp))
End With

Dim brr As Variant
brr = WorksheetFunction.Transpose(arr)
Dim strArray() As Variant
Dim i As Integer

For i = 1 To UBound(brr)
ReDim Preserve strArray(i - 1)
strArray(i - 1) = str(brr(i))
Next

With ws_pref
    .Range("a1").AutoFilter field:=1, Criteria1:=strArray, Operator:=xlFilterValues
    .Range("a1").CurrentRegion.SpecialCells(xlVisible).Copy ws_result.Range("a1")
    .AutoFilterMode = False
End With


MsgBox "処理が完了しました"

End Sub
자세한 설명은 아래를 참조하십시오.

참고


· WorksheetFunction 정보
· WorksheetFunction(워크시트 함수 사용)
· AutoFilter
매크로 VBA 준비 및 실행 방법 등의 사용법은 다음 사이트에서 확인할 수 있습니다.
· Excel 매크로 사용법 입문(초보자용)! 작성 ~ 저장 방법까지
· 엑셀의 신수 Excel 매크로 VBA 입문편
덧붙여서, 나는 "엑셀의 신수"에서 공부했습니다. 실제로 손을 움직여 보는 것이 1번이라고 생각합니다.
매크로 VBA에 관계없이 바로 가기 키를 기억하는 것이 편리합니다!

실행 결과


②에서 키가 되는 「코드」를 선택(필터링)합니다.
※그림에서는 2, 13, 18, 21, 26을 선택

실행 버튼을 클릭하면 ②에서 선택한 행을 추출한 표가 ③에 작성되어 대화 상자가 표시됩니다.

좋은 웹페이지 즐겨찾기