レコードのサブセットのインポート(Microsoft Excel)
Gordonは、特定のフィールドの値に応じて、テキストファイルのサブセットをExcelにインポートする方法を考えています。例として、テキストファイルの各レコードの列5に「y」を含むレコードのみをインポートしたい場合があります。
このタスクに取り組むには、いくつかの方法があります。 1つは、テキストファイル全体をインポートし、レコードを並べ替えて、不要なレコードを削除するだけです。これは、単一のファイルを処理するだけでファイル全体が単一のワークシートに収まる場合は、おそらく最も簡単なオプションです。
別のアプローチは、マクロを使用することです。 (これは、特に同じタイプのファイルをかなりインポートする必要がある場合に、私が最も速くて簡単だと思うものです。)マクロは、テキストファイルを開き、各行を読み取ってから、その行の情報をワークシートに追加するかどうか。これは、「MyCSVFile.txt」という名前のファイルを開き、最初の行から始まる新しいワークシートにデータを貼り付ける例です。
Sub ReadMyFile() Dim R As Integer Dim C As Integer Dim sDelim As String Dim sRaw As String Dim ReadArray() As String sDelim = "," ' Set to vbTab if tab-delimited file Worksheets.Add Open "myCSVFile.txt" For Input As #1 R = 1 Do While Not EOF(1) Line Input #1, sRaw ReadArray() = Split(sRaw, sDelim, 20, vbTextCompare) If ReadArray(4) = "y" Then For C = 0 To UBound(ReadArray) Cells(R, C + 1).Value = ReadArray(C) Next C R = R + 1 End If Loop Close #1 End Sub
マクロを使用するには、処理するファイルに一致するようにファイルの名前を変更するだけです。また、sDelim変数を変更して、レコードで区切り文字として使用されているものと一致するようにすることもできます。記述されているように、区切り文字はコンマ(CSVファイルに含まれる)であると想定していますが、実際にタブで配信されるファイルを操作している場合は、vbTabに変更できます。マクロが完了すると、単一の小文字の「y」文字を含むレコードのみが新しいワークシートに含まれます。
もう1つのアプローチは、ExcelのPowerQuery機能を使用することです。これはMicrosoftの無料のアドインで、Excel2010およびExcel2013の一部のバリエーションで使用できます。次の場所からダウンロードできます(サポートされているバリエーションを確認できます)。
http://www.microsoft.com/en-us/download/details.aspx?id=39379
Excel 2016を使用している場合は、PowerQueryがプログラムに組み込まれています。
Power Queryがインストールされているか、ご使用のバージョンのExcelで使用可能であり、そのバージョンのExcelがたまたまExcel2010またはExcel2013である場合は、次の手順に従います。
。リボンの[電力クエリ]タブを表示します。
。 [ファイルから]をクリックします| CSVから。 Excelは、カンマ区切り値の参照ダイアログボックスを表示します。これは、標準の[開く]ダイアログボックスと非常によく似ています。
。 ExcelにインポートするCSVファイルを見つけて選択します。
。 [開く]をクリックします。 Excelは、各フィールドで使用可能なフィルタリングボタンを備えたPowerQueryウィンドウにデータをロードします。
Excel 2016以降のバージョンを使用している場合、手順は少し異なります。
。リボンの[データ]タブを表示します。
。 [取得と変換]グループで、[新しいクエリ]ツール(Excel 2016)または[データの取得]ツール(最新バージョンのExcel)をクリックします。 Excelにはいくつかのオプションが表示されます。
。 [ファイルから]をクリックします|テキスト/ CSVから。 Excelは、標準の[開く]ダイアログボックスと非常によく似た[データのインポート]ダイアログボックスを表示します。
。 ExcelにインポートするCSVファイルを見つけて選択します。
。 [開く]をクリックします。 Excelは、各フィールドで使用可能なフィルタリングボタンを備えたPowerQueryウィンドウにデータをロードします。
この時点で、使用しているExcelのバージョンに関係なく、コントロールを使用してクエリを指定できます(つまり、インポートするレコードの定義を設定します)。 [閉じてロード]をクリックすると、レコードがファイルから取得され、クエリを保存して後で使用できるようになります。
4番目のアプローチは、MicrosoftQueryを使用することです。そのためには、この非常に長い一連の手順に従う必要があります。 (MicrosoftがMicrosoft Queryを使いやすくしたいと言ったことはありません。これらの手順を実行すると、同意することになります。)
。リボンの[データ]タブを表示します。
。 [データの取得と変換]グループの[データの取得]ツールをクリックし、[他のソースから](以前のバージョンのExcelの[外部データの取得]グループで)を選択してから、[MicrosoftQueryから]を選択します。 Excelに[データソースの選択]ダイアログボックスが表示されます。 (図1を参照)
。 [新しいデータソース]オプションを選択し、[OK]をクリックします。 Excelは、[新しいデータソースの作成]ダイアログボックスを表示します。 (図2を参照)
。 「CSVファイル」など、データソースの名前を入力します。
。項目2のドロップダウンリストを使用して、Microsoft TextDriverを選択します。
。 [接続]をクリックします。 Excelは、[ODBCテキスト設定]ダイアログボックスを表示します。
。すぐに[OK]をクリックしてダイアログボックスを閉じます。
。 [OK]をクリックして、[新しいデータソースの作成]ダイアログボックスを閉じます。 Excelは、[データソースの選択]ダイアログボックスを更新して、手順4で指定した名前を含めます。
。作成したデータソースを選択し、[OK]をクリックします。 Excelは、ソースにデータテーブルがないという警告を表示します。 (それは大丈夫です;あなたは何も定義していません。)
。 [OK]をクリックして、警告を閉じます。 Excelに[クエリウィザード]ダイアログボックスが表示されます。
。空のクエリウィザードダイアログボックスでは何もできないため、[キャンセル]をクリックします。 Excelは、MicrosoftQueryをそのまま使用するかどうかを尋ねる警告を表示します。
。 [はい]をクリックします。 Excelに[テーブルの追加]ダイアログボックスが表示されます。
。ダイアログボックスのコントロールを使用して、CSVファイルを見つけて選択します。
。 [追加]ボタンをクリックします。 Excelは何もしないように見えますが、実際にはCSVファイルへの参照を追加しました。
。 [閉じる]ボタンをクリックして、[テーブルの追加]ダイアログボックスを閉じます。 CSVファイルがMicrosoftQueryウィンドウに表示されます。
。 CSVファイルのフィールドのリストを使用して、ワークシートにインポートする各フィールドをMicrosoftQueryウィンドウの下部の領域にドラッグします。 (すべてのフィールドが必要な場合は、アスタリスクをウィンドウの下部領域にドラッグするだけです。)
。クリック基準|基準を追加します。 Excelは、[基準の追加]ダイアログボックスを表示します。 (図3を参照)
。ダイアログボックスのコントロールを使用して、フィールド5(名前が何であれ)を「y」に等しくするように指定します。
。 [追加]ボタンをクリックして、実際にクエリに条件を追加します。
。 [閉じる]をクリックして、[基準の追加]ダイアログボックスを閉じます。
。 [ファイル] | [ファイル]をクリックしますデータをMicrosoftExcelに返します。 Excelに[データのインポート]ダイアログボックスが表示されます。 (図4を参照)
。必要に応じて、ダイアログボックスの設定を変更して、CSVデータをExcelに返す方法を指定します。
。 [OK]をクリックします。
(手順が長かったことを説明しました。)これで、Excelでデータを操作でき、必要に応じて、リボンの[デザイン]タブのツールを使用して、CSVファイルからデータを更新できます。
注:
このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(10384)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice365のExcelに適用されます。