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に感謝します。

前の記事 次の記事

トップのヒント