内容

ソース データからインポートする必要がある正確な行数と行数が事前にわからない場合があります。 テキスト ファイルから Power Query にデータを読み込む必要があるとします。一見すると、大きな問題にはなりません。 問題は、ファイルが定期的に更新されることです。明日には、データの行数が異なり、ヘッダーが XNUMX 行ではなく XNUMX 行になる可能性があります。

Power Query でフローティング フラグメントをインポートする

つまり、どの行から開始し、正確に何行をインポートする必要があるかを事前に確実に判断することはできません。 これらのパラメータはリクエストの M コードにハードコーディングされているため、これは問題です。 また、最初のファイル (5 行目から 4 行をインポート) をリクエストすると、XNUMX つ目のファイルでは正しく機能しなくなります。

クエリ自体が、インポート用の「フローティング」テキスト ブロックの開始と終了を決定できれば素晴らしいことです。

私が提案したい解決策は、必要なデータ ブロックの開始と終了のマーカー (特徴) として使用できるキーワードまたは値がデータに含まれているという考えに基づいています。 この例では、先頭は単語で始まる行になります。 SKU、そして最後は単語のある行です トータル. この行の検証は、条件付き列を使用して Power Query に簡単に実装できます。これは、関数の類似物です。 IF (IF) マイクロソフト エクセル。

それを行う方法を見てみましょう。

まず、テキスト ファイルの内容を標準的な方法で Power Query に読み込みましょう。 データ – データ取得 – ファイルから – テキスト/CSVファイルから (データ – データ取得 – ファイルから – テキスト/CSVファイルから). Power Query を別のアドインとしてインストールしている場合、対応するコマンドがタブに表示されます。 パワークエリ:

Power Query でフローティング フラグメントをインポートする

いつものように、インポート時に列区切り文字 (この場合はタブ) を選択でき、インポート後に自動的に追加されたステップを削除できます 改造型 (タイプ変更)、列にデータ型を割り当てるのは時期尚早なので:

Power Query でフローティング フラグメントをインポートする

今コマンドで 列の追加 – 条件付き列 (列の追加 — 条件付き列)ブロックの最初と最後に XNUMX つの条件をチェックして列を追加し、それぞれのケースで異なる値を表示します (たとえば、数字 1 и 2)。 どの条件も満たさない場合は出力 ヌル:

Power Query でフローティング フラグメントをインポートする

をクリックした後 OK 次の図が得られます。

Power Query でフローティング フラグメントをインポートする

それでは、タブに行きましょう。 変換 そしてチームを選択 フィル - ダウン (変換 – フィル – ダウン) – XNUMX と XNUMX は列を下に伸ばします。

Power Query でフローティング フラグメントをインポートする

それでは、ご想像のとおり、条件付き列の単位を単純にフィルター処理することができます。これが切望されたデータです。

Power Query でフローティング フラグメントをインポートする

残っているのは、コマンドで最初の行をヘッダーに上げるだけです 最初の行をヘッダーとして使用する タブ ホーム (ホーム – 最初の行をヘッダーとして使用) ヘッダーを右クリックしてコマンドを選択することにより、不要なより条件付きの列を削除します 列を削除 (列を削除):

問題が解決しました。 これで、ソース テキスト ファイルのデータを変更するときに、必要なデータの「フローティング」フラグメントの開始と終了がクエリによって個別に判断され、毎回正しい行数がインポートされるようになりました。 もちろん、このアプローチは、TXT ファイルではなく XLSX をインポートする場合や、コマンドを使用してフォルダーからすべてのファイルを一度にインポートする場合にも機能します。 データ – データの取得 – ファイルから – フォルダーから (データ — データの取得 — ファイルから — フォルダーから).

  • Power Query を使用してさまざまなファイルからテーブルを組み立てる
  • マクロと Power Query を使用してクロス集計をフラットに再設計する
  • Power Query でプロジェクト ガント チャートを作成する

コメントを残す