Excelマクロ - 動的列選択
- 問題
- 溶液
- 注意
問題
私はExcelマクロを学び始めたばかりです。 列ヘッダー名だけに基づいて列を動的に選択する必要があるシートを作成していました。 説明させてください。
次の列(A1からD1まで)を含むExcelシートがあるとします。
RecNo Cust_ID Cust_Name Contact_Num
これらの下には、存在する顧客データがあります。 今度は、すべてのレコードについて、Cust_ID(B列から)とCust_Name(C列から)だけを抽出します。
しかし、問題は、Cust_IDが常に列Bにある必要はないことです。見出しは常にCust_IDになりますが、生成された他のシートではその位置が列Cに変わり、代わりにCust_Nameが表示されます。列B(抽出する必要がある2つの列は交換されています)。
一致機能を使用して、列の位置を判断することはできますが、それ以降はその列を選択することはできません。
列番号を決定するために使用した関数は以下のとおりです。
WorksheetFunction.Match( "Cust_ID"、範囲( "A1:D1")、0)
溶液
これらを使うだけです:
'データシート範囲の決定 LimLastRowの長さをDimのlngLastColの長さをDimに変更varDataSelect Variant '行と列の範囲を動的に選択します。 lngLastRowNum = ActiveCell.Row Selection.End(xlToRight)を選択します。lngLastCol = ActiveCell.Columnを選択します。ワークシートの名前 "MonthlyReceivedClaims_Data"は1行目の1列目で始まり、 ":R"で終了します。&lngLastRowNum "C"&lngLastCol varDataSelect = "MonthlyReceivedClaims_Data!R1C1:R"&lngLastRowNum& "C"&lngLastCol ActiveWorkbook.PivotCaches.Add(SourceType:= xlDatabase、SourceData:= _ varDataSelect).CreatePivotTable = TableDination、 "TableDest" = "PivotTable1"、DefaultVersion:= _ xlPivotTableVersion10 ActiveSheet.PivotTableWizard TableDestination:= ActiveSheet.Cells(3、1)
'また、ツールの下のレコードマクロ機能を使用するのに役立ちます。
'レコードをクリックしてください。 必要に応じてレポートまたはピボットテーブルを作成します。
次に、[記録を停止]をクリックし、必要に応じてコードを編集します。
注意
フォーラムでこのヒントを提供してくれたAMに感謝します。