[[20220728174308]] 『Power Queryの実行順序を制御したい』(よむよむ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『Power Queryの実行順序を制御したい』(よむよむ)

Excel2016で、Power Queryを使っています。

表1を作成
表2を作成
:
表9を作成

表1〜表9の結果を使い、表10を作成
表10の結果を使い、表21を作成
表10の結果を使い、表22を作成

の様に、順番に表を作っていく処理を行いたい場合、「全て更新」で、希望する順番通りに、実行する方法は、有りますでしょうか?

「バックグラウンドで更新する」のチェックを外すと、ブック クエリに並べた順番に実行してくれるものなのでしょうか?

1ファイルに、20くらいクエリがあるファイルが、10個くらいあるので、クエリ一つ一つを順番に更新していくのは、あまり現実的ではないのです。

< 使用 Excel:Excel2016、使用 OS:Windows10 >


 どういう用語を使って説明すればいいかよくわからないので、混乱してしまうかもしれませんが

 元ソース → クエリ → 読み込んだクエリ

 となっているときに、
 読み込んだクエリのテーブルから、[テーブルまたは範囲から]でクエリをつくるんじゃくなくて、
 クエリの参照でつくるようにしたらどうでしょう

 PowerQueryエディタの表示タブで、クエリの依存関係を表示させてみてください。
 これが相互に関連するようにします。
 
 PowerQuery 参照 をキーワードにして検索してみてください。
(´・ω・`) 2022/07/28(木) 20:08

回答ありがとうございます。

クエリの依存関係の表示の機能は、知りませんでした。
この依存の順番で、実行されるという事でしょうか?

クエリの結果を次のクエリで使用する場合は、クエリの参照で作っている為、クエリの依存関係は、期待している依存関係となっていました。

(よむよむ) 2022/07/29(金) 09:39


 >この依存の順番で、実行されるという事でしょうか?
 そうならないんですか?

 PowerQueryは、書いたステップの順番どおりに評価されることは保証されてなくて、
 遅延評価というらしいですが、評価の順序が変わる場合があります。
 わたしもそれで悩んだことがあります。

 あるクエリAから、別のクエリBを参照しているときに、
 クエリBがすべて完了してからクエリAが実行されるのかどうか、私には分かりません

 期待したとおりになってないというなら、それに対する対策を考える必要がありますが、
 実際の結果がどうなっているか確かめて無いけど、結果を保証しろというなら私には不可能です

 参照するときに、Table.Bufferとかをかませばいいんでしょうか?
 識者の回答をお待ちください。
(´・ω・`) 2022/07/29(金) 13:05

あちこち検索してみました。
こんなマクロで更新完了まで待機してくれそうです。

 Sub test()
    Dim qt As QueryTable

    Set qt = Sheets("Sheet1").ListObjects("テーブル名").QueryTable

    qt.Refresh BackgroundQuery:=False
    Do While qt.Refreshing
        DoEvents
    Loop
    MsgBox "次のクエリを更新してください"

 End Sub

(マナ) 2022/07/29(金) 23:28


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.