以前、出現する特定文字の上の行を可変で削除する方法は過去の記事で紹介しました
今回は「特定文字の下」を削除する方法を解説したいと思います
上の画像に「部門」という文字が出現しますが、こちらの文字以降の行を可変で削除します
「部門」の文字が5行目に現れようが、100行目が現れようが、それ以降の行を削除できるようにします
ポイント
今回のポイントはM関数「List.PositionOf」を使用し、特定文字の行位置を取得することです
そして、行位置を取得するM関数は数式バー内に仕込むのもポイントです
List.PositionOf
改めて、M関数/List.PositionOfについて解説します
このM関数はリストの中から、特定の文字の位置を抽出します
文法は以下のようになります
List.PositionOf(リスト,文字列)
今回はこの「特定の文字の位置」を行位置に置き換えて使用します
List.PositionOf関数の第一引数のリストには、今回は「前ステップ名+列名」を使用します
行の保持
ホームタブに行の保持というメニューがあります
今回は「上位の行を保持」を使用して、特定の文字以降の行を削除します
メニュー通りに使用すると、下の画面で保持する行数を指定します
ここで注意して頂きたいのは、上の画像の行数を指定する箇所にList.PositionOfを埋め込むわけではありません
こちらには一旦、仮の行数を入力します(今回は5)
すると、上の画像のように「5」という数字が数式バーに入ります
こちらをM関数に置き換えます
数式バーの内容変更
上の内容では仮の行数で「行削除」が行われました
こちらをM関数により可変にします
その前に「行削除」が行われる前ステップの状態を確認します
受注NOの列に「部門」の文字列があります
こちらのステップ名と列名をM関数内のリストとして使用します
ですので、以下の画像のように数式バーを変更します
= Table.FirstN(昇格されたヘッダー数,List.PositionOf(昇格されたヘッダー数[受注NO],”部門”))
M関数:Table.FisrtNの第二引数に「5」と入力されていたところを、List.PositionOfに置き換えます
これで、特定文字で行削除を行う仕組みの完成です!
<まとめ>
今回は、List.PositionOf関数を使用して、特定文字列から下の行を可変で削除できるようにしました
内容を最初聞くと、難しそうに感じられる方もいらっしゃったかと思いますが、ダミーで行削除したステップの数式バーに関数を埋め込むだけなのでとても簡単です
記録マクロを修正するような内容でも、とても本格的なことができるのがPower Queryの良さですね!
コメントを残す