Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Excel 2016)
パワークエリでセルの内容をもとに抽出したい
投稿日時: 21/09/08 20:48:11
投稿者: toma100

こんにちは
よろしく御願いいたします
 
パワークエリではエディター内でフィルターを使って
特定の項目を抽出して取り込めますが
シートのセルに項目を入力したら
それに該当するデータを抽出することはパワークエリでできますでしょうか?
 
たとえば
A1セルに「田中」と入力したら、
その下の行に、田中に該当する数行のデータが抽出され
 
A1セルを「内山」に変更したら
その下の行に、内山該当する数行のデータが抽出される
ようなことは、パワークエリで可能でしょうか?
 
マイクロソフトクエリーではできたのですが
パワークエリでもできますでしょうか?
よろしく御願いいたします。

回答
投稿日時: 21/09/08 21:23:14
投稿者: んなっと

PowerQueryではフィルターをかけずに、シート上に読み込まれた後のテーブルでフィルターをかけるようにしましょう。
 
 
どうしてもセルの値を抽出条件に使いたいときは、
 
 抽出条件を入れるセル(A1)を選択した状態で
→画面左上の[A1 ▼]のような「名前ボックス」に
Crite
 と入力してEnter(これでA1セルに名前定義)
→[データ] [クエリと接続]
→テーブル1などをダブルクリックしてPowerQueryエディター起動
→名前 列を「田中」でフィルターをかけた状態で
→詳細エディター
→例えば下のようになっていたら...
 
let
    ソース = Excel.CurrentWorkbook(){[Name="テーブル1"]}[Content],
    変更された型 = Table.TransformColumnTypes(ソース,{{"名前", type text}, {"種類", type text}, {"値", Int64.Type}}),
    フィルターされた行 = Table.SelectRows(変更された型, each ([名前] = "田中"))
in
    フィルターされた行
 
赤い部分を追加変更
 
let
    Crt1 = Excel.CurrentWorkbook(){[Name="Crite"]}[Content]{0}[Column1],
    ソース = Excel.CurrentWorkbook(){[Name="テーブル1"]}[Content],
    変更された型 = Table.TransformColumnTypes(ソース,{{"名前", type text}, {"種類", type text}, {"値", Int64.Type}}),
    フィルターされた行 = Table.SelectRows(変更された型, each ([名前] = Crt1))
in
    フィルターされた行
 
→完了
→閉じて読み込む

回答
投稿日時: 21/09/08 21:29:02
投稿者: んなっと

A1セルの条件を変更したら
[データ]→[すべて更新]

回答
投稿日時: 21/09/08 21:51:04
投稿者: んなっと

ちなみに「田中または遠藤」としたいときは
 
   A B   C   D  E
1 田中   名前 種類 値
2 遠藤   田中  あ  1
3      遠藤  い  2
4      田中  え  4
5      遠藤  お  5
 
A1:A2にCriteと名前定義して
 
let
    Crt1 = Excel.CurrentWorkbook(){[Name="Crite"]}[Content][Column1],
    ソース = Excel.CurrentWorkbook(){[Name="テーブル1"]}[Content],
    変更された型 = Table.TransformColumnTypes(ソース,{{"名前", type text}, {"種類", type text}, {"値", Int64.Type}}),
    フィルターされた行 = Table.SelectRows(変更された型, each List.Contains(Crt1,[名前]))
in
    フィルターされた行

投稿日時: 21/09/08 22:08:27
投稿者: toma100

んなっと様、ありがとうございました!!
できました!
パワークエリでは記述しなければできないんですね^^
 
ちなみに、部分一致はできますでしょう?
たとえば、神奈川県と入力したら神奈川県の住所すべてが抽出できるとかは
可能でしょうか?
なんども申し訳ございません。。

回答
投稿日時: 21/09/08 23:39:11
投稿者: んなっと

 
●"田" を含む
 
  A B   C   D  E
1 田   名前 種類 値
2     田中  あ  1
3     小田  う  3
4     田中  え  4
5     小田  か  6
 
let
    Crt1 = Excel.CurrentWorkbook(){[Name="Crite"]}[Content]{0}[Column1],
    ソース = Excel.CurrentWorkbook(){[Name="テーブル1"]}[Content],
    変更された型 = Table.TransformColumnTypes(ソース,{{"名前", type text}, {"種類", type text}, {"値", Int64.Type}}),
    フィルターされた行 = Table.SelectRows(変更された型, each Text.Contains([名前], Crt1))
in
    フィルターされた行
 
 
●"田" で始まる
 
  A B   C   D  E
1 田   名前 種類 値
2     田中  あ  1
3     田中  え  4
 
let
    Crt1 = Excel.CurrentWorkbook(){[Name="Crite"]}[Content]{0}[Column1],
    ソース = Excel.CurrentWorkbook(){[Name="テーブル1"]}[Content],
    変更された型 = Table.TransformColumnTypes(ソース,{{"名前", type text}, {"種類", type text}, {"値", Int64.Type}}),
    フィルターされた行 = Table.SelectRows(変更された型, each Text.StartsWith([名前], Crt1))
in
    フィルターされた行

投稿日時: 21/09/09 06:54:13
投稿者: toma100

んなっと様!
返信遅くなって申し訳けございません。
できました!!
本当にありがとうございました!!!
いつも業務が助かっております。
ありがとうございました<m(__)m>