X



【Excel】Power Queryを語るスレ【Power BI】
0001名無しさん@そうだ選挙にいこう垢版2019/10/20(日) 11:59:28.17
Excel 2016から標準装備、Excel 2010以降も追加可能なPower Query。
使ってみると驚く部分は多々あれど、普及したとは言い難い。

手探りで分かったこと、英語の資料から判明したこと等、いろいろ語って下さい。
Power Pivot、Power View、Power BIについても歓迎。

公式 「概要と学習」 (日本語)
https://support.office.com/ja-jp/article/Power-Query-%E6%A6%82%E8%A6%81%E3%81%A8%E5%AD%A6%E7%BF%92-ed614c81-4b00-4291-bd3a-55d80767f81d

Excel 2010、2013用アドイン (日本語)
https://www.microsoft.com/ja-jp/download/details.aspx?id=39379

公式 M言語レファレンス (英語)
https://docs.microsoft.com/en-us/powerquery-m/index

「Power Query メモ」 (外部サイト:M言語レファレンスの日本語化等)
https://sites.google.com/site/powerquerymemo/
0003名無しさん@そうだ選挙にいこう垢版2019/10/25(金) 01:18:45.31
テーブル内の2列の組み合わせでソートする方法。

How to sort multiple columns using the M Language in Power Query
https://youtu.be/_5HKai6oR78

M言語の Table.Sort() の引数内に2つの列を入れ込む。

例) データ取得日を降順で、その中で観測日時は昇順で並べ替えたい場合
並べ替えられた行 = Table.Sort([前のステップ名],{{"データ取得日", Order.Descending},{"観測日時", Order.Ascending}})
0004名無しさん@そうだ選挙にいこう垢版2019/10/25(金) 02:36:24.34
Excel関数の "COUNTIF(A$1:A2,A2)以下コピペ" 【Running Count手法】で、
重複を上から順に計算するのをPower Query内で実現する方法。

Power Query Running Count Based on Row Condition ? Excel Magic Trick 1588
https://youtu.be/kjOmNPoVDYs

説明が早口なので、ヒアリングが弱い自分はまだ何回か見直さなければならないけど、
1. 基準となる列をソートした後にステップで
 BufferedTable = Table.Buffer("基準列")  ・・・COUNTIFの"A列"に相当
と、メモリー上に返す宣言するステップを作っておく。
2. カスタム列で1列追加して基準列をもとにした「内部表」を作る
=Table.AddColumn(BufferedTable, "RunningCount", each 1)
と、全部 "1" を入力する列を仮に追加しておいて、
3. カスタムファンクションの "each" の部分を省略表現の
(OT) =>
に変え?("Outside Table" "Inside Table"を略してそれぞれ (OT) (IT) のことか?)
以下、後はなんとなくだけど、当初テーブルを「外部表」として、
「外部表」の基準列に紐付けられた、入れ子の「内部表」を各行に作って
この内部表について、それぞれの行数を数えるCount関数をかぶせて、仕上がりは、
= Table.AddColumn(BufferdTable. "RunningCount",
(OT) => Table.RowCount(Table.SelectRows(BufferedTable, (IT) => IT[基準列]
<= OT[基準列] and IT[内部表の集計対象列] = OT[外部表の集計対象列])))
みたいな?

=> <= は「順次代入する」の意味?
""で囲まれた列名のアタマに付いた#は、列名にブランクが含まれている場合の特殊記号?
0006名無しさん@そうだ選挙にいこう垢版2019/11/03(日) 12:27:45.07
@同じフォルダ内に複数のEXCELファイルがある。
AそのすべてのEXCELファイルに全く同じ構成のテーブルがある(テーブル名、カラムの定義も一緒)。

そのすべてのテーブルをマージしたいんですが、ソース取得のコードってどう書けばいいでしょう?
0007名無しさん@そうだ選挙にいこう垢版2019/11/03(日) 17:16:19.22
>>6
行数を除いて、同じフォーマットの表であれば、
読み込むときに先に結合させては?

入り口は、このあたりも参考になるかと。
ExcelでPowerQueryを使ってデータ収集分析
https://qiita.com/mosugi/items/71df310b35db81722d1e

「データの取得−ファイルから−フォルダ−から」入って
フォルダーパスを指定したら、「結合」ボタンも出る。
その中のメニュー「データの結合と変換」を選ぶと
読み方(xlsxファイルだと、どのsheet/範囲/テーブルか、余計な行は削除するか、ヘッダーはどうするか、カスタム列の追加、列の型等)
をサンプルで指定できそう。

※ たぶん、エディターで自動生成される「サンプル ファイルの変換」で読み方を指定するのかと。
Power Query内に自動でパラメーター関係のフォルダーやクエリー等が生成されるけど、
このあたりの仕組みは、当方まだ解明できていない。

これをやってから読み込めば
出来上がるクエリーが1つになり、以後の扱いが楽になるかと。

ただし、
1. xlsx表内の目的のsheet名が異なっていると、面倒かも?
同じテーブル名だったら直接指定できるかもしれない。
2. 目的のフォルダーにさらにフォルダーがあって、別置きのものが入っていたりすると、
それも読み込んでしまう模様。
00087垢版2019/11/03(日) 17:18:19.58
>>6
で、コードは >>7 で出来た詳細エディターを参考に。
0009名無しさん@そうだ選挙にいこう垢版2019/11/27(水) 15:26:03.51
Power Pivot使ってる人ってどの位いるんだろう?
自分は何とか使えるようになったけど、セミナーに出席しても使えてそうな人殆どいなさそう...
0010名無しさん@そうだ選挙にいこう垢版2019/11/27(水) 16:04:13.51
>>9
日本語の解説書籍やWeb記事がまだ少ないからねぇ・・・

セル結合とかで、紙の帳票っぽく仕上げるとか、
IFの入れ子が多数な、複雑な関数を組んで作業列をなくすとかで、
見た目をよくすることばかりに血道を上げるより、
まず、テーブル形式(≒クエリー)がどれだけ便利かに気付いて貰えばと。

これ使うと、出来ることがだいぶ増える。
他の人がステップ(マクロ)の仕組みを理解するのは、
VBAよりも比較的わかりやすいし。

WebスクレイピングではPhythonより出来ることは限られるけど、
敷居の低さ、わかりやすさでは、こっちの方が良さそうに見える。

ビッグデータと呼ぶのが正しいかどうかは知らんけど、
特に、いろんなWebサイトで公開されてるデータ処理。

計算がバッチ処理・カスケード処理だから、
何十万行でも、普通のPCで出来るし。
VBAやPythonとの補完も出来そうだし。
0011名無しさん@そうだ選挙にいこう垢版2019/11/28(木) 00:59:16.42
パワーピボット使ってる。カラムの異なるデータがみるみる集計できるから多用してる。

でもあれも変なところで物足りなくて、時間表記でセル書式の[h]:mmなんかがサポートされてなかったり。
00129垢版2019/11/28(木) 10:12:04.47
>>10
同感。
普通の関数を追求するやつもそうだけど、VBAで自動化とかいうのもあまり好きじゃないな。
重い大量データを処理するなら絶対DAXが良い。
それに、どうせスクリプト書くなら汎用的なPythonやシェルスクリプト覚えた方がマシな気がする。

ところでPower Pivotでスクレイピングって、こういうのの事?
https://docs.microsoft.com/ja-jp/power-bi/desktop-tutorial-importing-and-analyzing-data-from-a-web-page

Power Pivotでこういう事をやろうとはあまり考えてなかったな。Pythonでは考えてたけど。
今度試してみよう。
0013名無しさん@そうだ選挙にいこう垢版2019/11/28(木) 23:08:44.86
>>12
そう。
「メニュー−データ−データの取得と変換−Webから」
でURLを指定するヤツ。

Power QueryではPythonみたいに、
Web画面がテキスト入力させたりとかボタンを押させたりのものだとタイヤ雨出来ないけど、
複数ページあって、URLがページ数を反映しているものだったら、
対応できる模様。
こんなのとか。

[Power BI / Excel] 複数にまたがる Web ページからデータを取得する
https://road2cloudoffice.blogspot.com/2017/07/power-bi-excel-web.html
0014名無しさん@そうだ選挙にいこう垢版2019/12/12(木) 18:38:41.37
2016vbaでcsvから作ったクエリのrefreshallしても更新されないことがある?
うちの環境で一旦endしても更新されない時があるのは謎。
ボタン分けて継続の作業をしていますが、その間に手動ですべて更新しています
0015名無しさん@そうだ選挙にいこう垢版2019/12/12(木) 20:14:38.01
>>14
vbaを噛ましてないけど、Office soloのExcelで、
1つのcsvから多段にクエリーを展開していくとき、
「すべて更新」で上手くいかないことはある。
正直、謎。

自分なりの回避方法は、

1. シーケンシャルに再計算させたいクエリーはそれぞれのプロパティで
 「バックグラウンドで更新する」:OFF
 「すべての更新でこの接続を更新する」:ON
https://i.imgur.com/ZBFAHRz.png

2. 「クエリと接続」の一覧で上から順番に並べる。

3. クエリーテーブルをsheetに置いてある場合は、
 計算順に左からsheetのタブを並べ替える。

これでも「最後の再計算が終わった」と思っても、
まだ中間のクエリーの1つが再計算しだしたりする・・・

保険で「すべて更新」は2回することにしている。

MSに提案してもいいかも、
もっと確実にしてくれと。
0016名無しさん@そうだ選挙にいこう垢版2019/12/12(木) 20:21:32.88
>>15
ありがとうございます
同様の事象があることがわかり安心しました。
仕事で使えると思って頑張って学習しています。
確認しながら進めて聞きます。
0017名無しさん@そうだ選挙にいこう垢版2019/12/18(水) 10:10:52.07
外部データ取り込みで他EXCELファイルのテーブルを読みに行く時、
そのテーブルのカラムのデータ型はanyで、nullも文字列も小数点以下の数値(正数・負数)も含むんだけど、
Table.ExpandTableColumnのタイミングで小数点以下が丸められてしまう。

追っていくと、SampleFileでファイルを呼び出した時点で丸められてしまっているようだ。


なった事あるって人居ませんか?
0018名無しさん@そうだ選挙にいこう垢版2019/12/18(水) 11:33:18.06
自己解決したので勝手に語る。

読み込み元ファイルの問題だった。
でも謎が残る。

元データのテーブルの該当データは通貨型。単純な掛け算式が入っていて、丸め処理はしていないから、セル表示では丸められているが、内部的には小数点以下を持っている。

これを、表示設定で小数点をセル表示上で見えるようにしてあげたら、クエリの結果に小数点以下が表示されるようになった。

因果はわかったけど、仕様が謎。
データ型変更、ステップのどこにも入ってないのにね。


他、関連するかどうかもわからないけど、勝手に型変更をしているステップがあって、Int64になってた箇所があった。この型も小数点以下の取り扱いが無く、丸められるので注意が必要。
0020名無しさん@そうだ選挙にいこう垢版2019/12/21(土) 00:08:19.02
読み捨てで読み込んだデータでは直接ピボット作れないのね
何十万行もあるデータファイルのデータ、容量を軽くしようて思ったけどダメだった

データモデルで読み込んでも半分も軽くならない
0021名無しさん@そうだ選挙にいこう垢版2019/12/21(土) 11:44:24.58
yahoo知恵袋に、「読み込み先を”データモデルへの読み込み”に変更して,ブッククエリのみを作製するとそのまま『PowerPivot』で読み込みできます」とあったのを見つけたんだけど、自分では未検証です。

↓ソース
Power Queryを使って、200万行ほどのデータを扱うことはできませんか?Power Pivotでの重複の削除の仕方がわからず、Power Query… - Yahoo!知恵袋 https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11154335451?fr=and_other
002220垢版2019/12/21(土) 16:24:04.15
>>21
ヒントありがとう!試してみます。
0023名無しさん@そうだ選挙にいこう垢版2020/01/18(土) 14:22:44.76
プライバシーレベルの設定で実際にどのような影響(効果)が出ますか?
社内のネットワークドライブに置いてある複数のブックからクエリを作ってそれを結合する様な使い方です。
0024名無しさん@そうだ選挙にいこう垢版2020/01/26(日) 20:29:57.40
パラメータの管理ってどういう使い方が想定されてるの?
パラメータに設定されてる値の変更はクエリエディタ開かないとできないよね?
0025名無しさん@そうだ選挙にいこう垢版2020/01/26(日) 21:57:03.50
あれはクエリエディタで汎用の関数やクエリを作るときの道具だと思う
Power BIのレポートのパラメータ編集なんかやるときに使うものでしょ
0026名無しさん@そうだ選挙にいこう垢版2020/05/28(木) 23:39:01.02
容量の大きなテキストから2つのテーブルを作るとき、今はクエリを2つ作ってそれぞれ実行するので、2回データの読み込み待ちがあるのが気になります。
読み込み1回で出来るよとか、なにか時間を短縮する方法を知ってる人がいたら教えて下さい。
0030名無しさん@そうだ選挙にいこう垢版2020/08/28(金) 10:53:58.93
(備忘)
VBAでクエリーを更新するとき、
 個別のクエリーを「最新の情報に更新」
の手動操作を「マクロの記録」でやると
 ActiveWorkbook.Connections("クエリ - 【クエリー名】").Refresh
となる。
これだと前後のsheetやVBA内での計算が
きちんと実効されないケースがあった。

こうではなく、

1. 事前にクエリーの変数を
Dim tbl As ListObject
等と宣言しておいて、

2. 変数に当該クエリーを代入
Set tbl = ThisWorkbook.Sheets("【シート名】").ListObjects("【クエリー名】")

3. 実際に更新する命令は "QueryTable"オブジェクトの"Refresh"メソッドを使って
tbl.QueryTable.Refresh BackgroundQuery:=False

とすれば期待通りの結果を得られた。

ここでの、"BackgroundQuery:=False"と、
明示的なパラメーター指定が重要。

省略するとデフォルトがTrueなので、
元のクエリーがプロパティで「バックグラウンドで更新する」のチェックが外れていても
チェックが入った状態と同等で実効される(?)ため、
シーケンシャルに計算が実行されないのか?
0031名無しさん@そうだ選挙にいこう垢版2020/11/26(木) 23:17:12.97
エクセルのpowe queryに関してです。 Table1
A列
3
1
2
Table2
A列   B列
リンゴ  1
イチゴ  2
バナナ  3
結合して
Table1へ
A列
バナナ
リンゴ
イチゴ
このようにしたいです。 お知恵をかしていただけないでしょうか。
0032名無しさん@そうだ選挙にいこう垢版2020/12/02(水) 08:51:17.92
>>31
今ひとつ質問の趣旨が読み取れないのだけれど、
Table1-A列、Table-B列の数値は何?
品目コード? 数量?

それとは別に「品目の表示順」を一定にしたいのだったら、
A列:表示番号、B列:品目のTable3
を別に作って、これに結合してソートかけちゃうけど。
0035名無しさん@そうだ選挙にいこう垢版2021/03/06(土) 04:35:58.10
意味のわからん物ばかり作らないでくれ
標準のVBAですらバージョン互換が事実上無いのに。
それはそうとPowerBIをまともに使ってる会社は本当にあるのか
弊社はコンサル料だけ払って放置中
0037名無しさん@そうだ選挙にいこう垢版2021/03/06(土) 22:04:14.60
PowerBIの様な素晴らしいツールがあるのに使えてないのが日本企業の駄目さ加減を表していると思う。
PowerQuery/BIの存在すら知らないのが大半かと。
0043名無しさん@そうだ選挙にいこう垢版2021/03/10(水) 10:47:05.97
神経症でも発症したのか?

「公共、公共」とかギャースカわめくなら、
もっと国際的に通用する、英語にでもしよか?

失せろ
0048名無しさん@そうだ選挙にいこう垢版2021/03/22(月) 13:37:23.07
46 じゃないが元経理として、
Power Query は大きな組織では、
・ERPから吐き出した大量の仕訳データを分析する (PCでの計算負荷分散、定型化)
・ERP化出来ていない細かい集計を各部署・現場から集める
なんてところで使えたろうな、と。
0049名無しさん@そうだ選挙にいこう垢版2021/03/22(月) 14:14:12.02
項目 4月 5月 … 3月
あれ 123 456 … …
それ …  …  … …


みたいな表を、
データとして再利用するのに

項目 月 値
あれ 4月 123
あれ 5月 456


みたいに線形にするのに使ってる。
ピボットを分解できるのが一番ありがたい機能。

回収した見込情報や作成した予算の、整理、分析。そういったことに流用してますね。

他にも諸々。
0050名無しさん@そうだ選挙にいこう垢版2021/04/11(日) 09:54:04.09
リレーションシップでハマってます。
どなたかお知恵を貸していただけないでしょうか。

↓のテーブルで担当者1と社員マスタは繋げられるのですが、担当者2を繋げようとすると循環参照だとエラーになってしまい困ってます

データテーブル
・担当者1
・担当者2

社員マスタ
・社員
0056名無しさん@そうだ選挙にいこう垢版2021/07/29(木) 11:06:01.27
Excelの話。
複数のcsvをFile結合したクエリAがあって、
そのクエリAを「参照」して集約データをつくるクエリBをこしらえた。

これでクエリBだけを更新すると
更新状況を示す欄にcsvを全部読み込んでる表示が出てくる。
クエリAの読み込み先はデータモデルにしてあるのだけど、それでもいちいちcsv読み直しに行ってるみたいでめっちゃ時間かかる。

クエリAの結果を保持したままクエリBだけ動いて欲しいなあ…大したことしてないから一瞬で終わるはずなのに。何かいい手ありません?

データモデルの意味も良くわからんなあ…
読み込み先データモデルにしとくとOnMemoryじゃなくてDiskに保存されてるものと思ってたから、いちいち読み込み直すんかい!て思った。
0057名無しさん@そうだ選挙にいこう垢版2021/07/29(木) 16:14:49.62
>>56
csvまで遡っての再読み込みで時間がかかるほど大きなデータなら、
csvを統合するクエリAまでで1つのbook
それを読込みに行くクエリBを別のbookにすれば
よろしいかと。

クエリAもBも1つのbookで、
「すべて更新」ボタンで更新しているなら、
クエリの構成によっては先にBの更新をしてしまい、
エラーになることがある。

シーケンシャルにA→Bの更新を実行させたい※なら、
クエリAのプロパティを開いて
「バックグランドで更新する」
「すべて更新でこの接続を更新する」
の2つのチェックを外したらどうか?
https://i.imgur.com/ckSj5fa.png

クエリBの更新は「すべて更新」で
クエリAの更新は「クエリと接続」の一覧で当該クエリを右クリックで「最新の情報に更新」
で出来ないか?

※ 多重なクエリを厳密にエラーなしにシーケンシャルに更新したいなら、
VBAで"tbl"をListObjectで変数宣言して、クエリ一覧表から1つ1つ
tbl.QueryTable.Refresh BackgroundQuery:=False
で更新させている。
0058名無しさん@そうだ選挙にいこう垢版2021/08/02(月) 15:24:54.85
>>57

ありがとうございます。
bookを分割するのが確実そうですね。
月初の繁忙期に入ってしまうので来週くらいに時間取って試してみます。

あとこれsharepointに上げておいたら定時更新してくれたりせんかなあ。
パソコンカチャカチャ仕事を減らしたくていろいろやってるのだけど、もうコード書くどころか「すべて更新」押すのすら面倒になってきた笑

面倒なのを「やっとけ」言うだけの人はいいよね
やらされる方はほんとたまったもんじゃないわ…
0060名無しさん@そうだ選挙にいこう垢版2021/08/25(水) 06:54:28.35
>>59 に追記
マージでの名寄せで完全一致以外のあいまい照合は、
閾値設定とか別リスト参照か。

番号範囲に対する近似値(うちわの最大)とかは出来ないので、
ここはヤッパリ、ソートしてMATCHとかXMATCHになりそう。
0061名無しさん@そうだ選挙にいこう垢版2021/09/09(木) 16:30:59.59
初心者です
みなさま教えて下さい

PowerQueryで吐き出したシートに対して、列ごとに名前の定義をして使うことを考えています
しかし、元データを直して更新すると、吐き出したシートの列の名前の定義が消えてしまうようです
どうやったら解決できるでしょうか?
VBA組むか、その都度定義してやるしかないでしょうか
よろしくおねがいします!
0062名無しさん@そうだ選挙にいこう垢版2021/09/10(金) 02:54:51.48
>>61
> 元データを直して更新すると、吐き出したシートの列の名前の定義が消えてしまうよう

状況がよく分からないのだけれど、
列名変更をPower Query エディターでやらずに、
ワークシート上で直接変更した
ということ?

クエリーとして最初に認識した列名が
エディター内のその後のステップで扱われるから、
エディターで列名変更しないとクエリーエラーになるのかと。

元のシートの列名と、変換したい列名が固定しているなら
エディター内で列名を変更するステップを追加すれば良いのでは?

元表をクエリーに変換するとき、先頭行をテーブルの見出しにしないか、
例えば、
・元表は別のbook
・ワークシート名は同じ
・対象となるテーブルや定義範囲のタイトル行は、ワークシート上の開始位置は同じ
・列の基本構成や順番は同じで、「8月合計」→「9月合計」に変わる程度
ということなら、

クエリーとして読込む対象を、テーブルではなくワークシートにすると
A列、B列・・・がColumn1、Column2・・・として固定して認識されるので、
エディター内で
・このColumn1、Column2・・・の列名変更する
・データ本体1行目までの間にある余計な行(旧見出し行を含む)を削除
するステップを入れれば良いのでは?
0063名無しさん@そうだ選挙にいこう垢版2021/09/11(土) 09:36:43.83
PowerQueryで、
「セルがすべてnull」の列を判定して、その列を削除する
みたいなことってできますかね?
M関数をどうやって組めばよいでしょうか。
006563垢版2021/09/11(土) 14:35:27.32
>>64
やっぱりだめですかありがとうございます
VBAでやるしかないですかね・・・
006763垢版2021/09/11(土) 17:05:12.81
>>66
PowerQueryでなにか方法ありますか?
007063垢版2021/09/11(土) 18:22:02.99
>>69
おお、その手がありましたか
ちょっと試してみようかな
ありがとうございます
0073名無しさん@そうだ選挙にいこう垢版2021/10/17(日) 21:29:55.20
>>72
テキストにして「2021/」を「R3」に置き換えるか、
西暦を「-2018」して頭に「R」付けるのはだめでつか。
てかExcelで読み込んで書式設定してやればいい気がします。
0074名無しさん@そうだ選挙にいこう垢版2021/10/18(月) 08:05:27.92
初めての書き込みです
クエリとピボットどちらにもブックを開く時に自動更新がかかるようにしているファイルがあるのですが
ブックを開く→ピボット更新→クエリ読込 の順で処理されてしまうようでピボットが最新の状態になりません
クエリの読み込み結果を待ってからピボット更新とする方法はないでしょうか?
手動で更新すればいいだけの話なのですがそれでは自動化とはいえず困っています
0076名無しさん@そうだ選挙にいこう垢版2021/10/18(月) 13:15:15.00
私もわからないことが。

Query1(外部ファイル参照・ビュー整形)

Query2(ファイル内のテーブルとQ1を参照)

Q2を更新したときに、
単純にQ1の結果だけを見に行ってほしい。
Q1のプロセスをイチから辿らないでほしい。
外部ファイルを参照しないようにしてほしい。

Table.Bufferも効いていないようだし、
VBAは選択肢に入れたくないし。

仕方ないから、Q1を参照する式を埋め込んだセルを用意してそれをテーブル化し、Q2はそれを参照するようにしたけど、良い方法では無いしね。
0077名無しさん@そうだ選挙にいこう垢版2021/10/18(月) 18:10:22.81
>>76
Query1の「クエリ プロパティ」は、
>>57 の画像にあるように
「バックグランドで更新する」
「すべて更新でこの接続を更新する」
の2つのチェックを外してる?
0080名無しさん@そうだ選挙にいこう垢版2021/11/02(火) 20:12:42.49
同じ行に、同じ文字列が出た場合、左から読んで一番左のものだけ生かして、ほかはnullにする方法とかありますでしょうか。
パワークエリでできたらありがたいです。


A B C A D C E C D F



A B C   D   E     F

みたいなイメージです
どうぞよろしくご指導お願いいたします!
008280垢版2021/11/03(水) 06:58:14.95
>>81
ありがとうございます

> 複数行なら比較列をひたすら挿入していく

具体的にはどんな比較列になるでしょうか m関数を示していただければ幸いです
0083名無しさん@そうだ選挙にいこう垢版2021/11/13(土) 15:57:00.01
日本語のYouTubeチャンネルでも
Power Query、Power Pivot、M数式、DAX関数を扱うところが増えてきた。

以下、さらっと紹介するんでなくて、個別機能を紹介していると思われるところ。

・ExcelドカタCH
https://www.youtube.com/c/Excel%E3%83%89%E3%82%AB%E3%82%BFCH%E3%83%89%E3%83%83%E3%83%88%E3%82%B3%E3%83%A0/videos
経理屋さん?からの視点

・ITツール学習
https://www.youtube.com/channel/UCRlt1tx7EA5HCSH6l22YisQ/videos
ここはPower BIからの切り口。
Power Automate Desktopなんかも扱っている。

こんなところか?


海外のような、
裏技的/かゆいところに手が届くような解説チャンネルは
まだか?

・クエリと接続の違い
・パラメーターの説明
なんかもまだなさそう。

個人的には、
クエリをワークシートに読込んで右列に重複チェックのCOUNTIF関数計算して
再度、右列を含んだ範囲をクエリにして重複チェック列値をフィルタしている自己流を
なんとかしたい。
M言語にこんな機能はあるのだろうか?
0087名無しさん@そうだ選挙にいこう垢版2021/11/14(日) 08:20:09.13
>>84
グループ化では重複数そのものは出せるんだけど
たとえば重複数が3だったとして
ソートしてCOUNTIF(A$1:A3,A3)のように
1
2
3
という芸当は出来なかったような。

DAX関数だと出来るらしいが、今度はその後のクエリー処理が続かなさそう。
008883垢版2021/11/14(日) 10:33:08.91
>>84
「最新版を抽出する」という意味で、それらしき事例があったわ。
PowerQueryでやる方法は、ちょっとトリッキーだけど。

https://youtu.be/2DJI9V1kBqg
0090名無しさん@そうだ選挙にいこう垢版2021/11/16(火) 21:26:07.71
誰か教えて下さい
フォルダから同じ体裁のデータを複数取得し、
クエリで一行目を削除して二行目をヘッダーに昇格させてるのですが、
どうしても2つ目以降のデータの先頭2行がレコードとして残ってしまいます
フィルタリングすれば消せるっちゃ消せるのですが、、、
これは仕様なのでしょうか?
内部的に先にデータを合体させてるからこんなことに?
0092名無しさん@そうだ選挙にいこう垢版2021/11/16(火) 21:46:16.28
fxのクエリの詳細画面で、2行目と、接尾に2個あるin〜の2個めの方と、一番最後の行、この3つを//でコメント化してあげると、普通のクエリとして認識されるから、その上で編集して、最後にその//を削除すれば編集完了。あとは本来のクエリ側で、問題なく順番にクエリが評価されていくかを確認して。
0093名無しさん@そうだ選挙にいこう垢版2021/11/17(水) 00:22:27.51
勤務実績(従業員名、日付、残業時間)から残業時間を5日毎かつ従業員別に集計したい

Sumlfsを再現するにはどの関数を使えばよいですか?
0095名無しさん@そうだ選挙にいこう垢版2021/12/16(木) 09:27:31.56
年月、商品、数量のリストが数年分あります
数量の多い商品順にランク付けしたいのですが年月別に集計するやり方がわかりません
どのように範囲指定すればよいでしょうか?
0098名無しさん@そうだ選挙にいこう垢版2022/02/14(月) 20:50:10.87
これ四捨五入すると5が切り捨てられるんだけどどうにかならないですか?

Round関数 パワクエ
0.234 0.23 0.23
0.345 0.35 0.34 ←←←
0.456 0.46 0.46
0099名無しさん@そうだ選挙にいこう垢版2022/02/14(月) 20:58:39.13
どっかの記事
パワークエリの四捨五入は「銀行型丸め」が適用されており、ワークシート上のROUNDと結果が異なる場合があります。
この対策として、M関数の「Number.Round」の丸めモードを算術型丸めになるように設定する必要があります。
0101名無しさん@そうだ選挙にいこう垢版2022/03/13(日) 10:44:22.49
「後ろにステップを挿入」の使い方、少し分かってきた。

例えば、csvファイルが単純なマトリックスだけでなくて、
ヘッダーみたいに集計日とかデータ更新日とかが入っているような複合構成の場合、
上位行削除とか列削除/追加してなど加工して、本体部をひとまず整形し、
最後のステップ名が「変更された型」だったとする。<-ココ大事

ここで全行に共通する「集計日」列を追加したいとすると、
右クリックで「後ろにステップを挿入」して、処理をいったん分岐(?)出来る。

元ステップ冒頭の「ソース = ・・・」をコピペして「ソース2 =・・・」とすれば、
csvを読込んだ最初の状態をまた読み込める。
今度はヘッダー部分の「集計日」だけに削って行って、
 集計日
 2022/3/12
の2行×1列だけのテーブルにし、
ここでの最後のステップ名が「変更された型2」だったとすると、
 R_集計日 = Table.FirstValue(変更された型2),
とかにして、1行目の値を名前定義の変数にしておく。

で、元の本体部への戻り方は、「カスタム列の追加」の場合だと
 カスタム列の追加 = Table.AddColumn(変更された型, "追加列名", each R_集計日)
で、全行共通の集計日列が追加出来た。

・複数行/列にした場合はどうすればいいのか、
・他のクエリーの任意の行/列の値を取得するにはどうすればいいのか、
は今後の課題。

M式はList.なんちゃらを使う?
引数は{0から始まる行番号}[列名]を使った何かか?
0104名無しさん@そうだ選挙にいこう垢版2022/03/23(水) 11:26:04.52
僭越ながら教えてください。

パワークエリで見た目の整形の話です。

Excel2019でパワークエリで大量の
テキストファイルを読み込ませてるのですが、そこまではうまくいきました
見栄えのためにテキストファイルごとに列を分割して並べて表示も時々利用したいと考えています。
そのようなことはできるでしょうか?

イメージとしてはテキストコピペしてエクセルのA1から横に張って行くイメージです。

※背景として利用したいテキストファイルが合計15000ほどあり各システム別に分けられているので一つのくぎりとしては100程度になります。
利用目的としてpivot機能も含むチェック業務利用です。
0107名無しさん@そうだ選挙にいこう垢版2022/03/23(水) 14:24:28.16
>>104 
powerquery内でTable.Pivot関数突っ込めば列にその情報ソースを出力できないこともない。リボンに列のピボット?があるはずだから、それ突っ込めば希望に近いものができるかもしれないので自分で調べて。その整形自体おすすめしないけど。15000列もエクセル側が受け皿を用意できたっけね?
0108名無しさん@そうだ選挙にいこう垢版2022/03/25(金) 22:58:56.33
誘導されてきました
エクセルのクエリで、一つのファイルにある複数のシートから、たとえば1つ目から4つ目のデータ(1000行くらい)を1枚目を1から4、2枚目を5から8に転記していくにはどのような設定でやればいいでしょうか
0109名無しさん@そうだ選挙にいこう垢版2022/03/26(土) 05:23:53.34
>>108
その質問文、
VBAスレでわかりにくいって言われてたのに
そのままコピペするとは
おたく、どういう神経なのか?

マージについては以下参照。
https://hamachan.info/excel2019-powerquery-kyotu/#:~:text=Power%20Query%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF%E3%83%BC%E3%81%A7%E3%82%AF%E3%82%A8%E3%83%AA%E3%81%AE%E3%83%9E%E3%83%BC%E3%82%B8,-%EF%BC%BB%E8%B2%A9%E5%A3%B2%EF%BC%BD%E3%82%AF%E3%82%A8%E3%83%AA%E3%82%92&text=Power%20Query%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF%E3%83%BC%E3%81%8C%E8%B5%B7%E5%8B%95,%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%81%8C%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82

あとは知らん。
0110名無しさん@そうだ選挙にいこう垢版2022/03/26(土) 07:09:05.40
>>108
VBAスレから誘導されたの見てて心配で見に来たけど
不特定多数のシートを扱うならクエリも多分動的制御が必要になるから結局VBAのお世話になると思うよ。

たらい回しにするつもりはないけど、
VBAで言ってることを実装出来るコードを書いといたので一応見といてくれ。
Power Queryは使っていないけどね。
0111名無しさん@そうだ選挙にいこう垢版2022/03/26(土) 08:06:23.90
>>109
質問者自身が自分が何やりたいのか分かってないと思うから丁寧に回答したところで思っていたのと違うとかそんな事言われるだけになるぞ
お互い損するだけ
0112名無しさん@そうだ選挙にいこう垢版2022/03/26(土) 12:52:40.95
>>110
普段はPower Query使ってるけど、
繰り返し大量処理だとメモリー爆食いするので
VBAも参考にさせてもらってるよ。

ヘルパークエリーでパラメータ使って
さらにその都度VBAでファイル保存の
合わせ技で効率良くなるかも知れない。
0113名無しさん@そうだ選挙にいこう垢版2022/03/26(土) 22:07:01.78
この処理は難しそうということですね
ありがとうございました
0115名無しさん@そうだ選挙にいこう垢版2022/03/28(月) 18:47:33.32
>>113
生半可Power Cueryでやろうとするから難しいだけ。
やる方法には適材適所というものがある。

上記の要件であればVBAならバカでチンケな俺でも数分で作ることが出来た。というかVBAスレに貼っておいた。

Power Queryの今までやってきたことは無駄にはならないだろうけど、
自分でVBAのコード書いたりSQL書いたり出来ると更に出来る仕事の幅が増えるよ。

まぁスレ違いだからこの話はここではこれ以上しないけどね。
0118名無しさん@そうだ選挙にいこう垢版2022/03/29(火) 07:37:54.81
すみませんが、どうしてもわからないので教えてください。

Powerqueryで以下の式を”リストでの数値カウント”ではなくて、
原文そのままのテキストで表示したいと思っています。
どういう式を書けばいいのでしょうか?

「 ピボットされた列1 = Table.Pivot(削除された列1, List.Distinct(削除された列1[Source.Name]), "Source.Name", "Column1", List.Count)」
※上の式は「列のピボット」のGUIボタンで自動作成されました。
0119名無しさん@そうだ選挙にいこう垢版2022/03/29(火) 10:53:52.14
>>118
こういうこと?
たとえば、こんなテーブル:T_元表(一番左の青テーブル)があったとする。
ここでは「項目1:あ」−「項目2:a」の値が、「あああ」と「AAA」が重複している。
https://i.imgur.com/QI2nbEp.png

これをクエリーに置換えたのが2つ目のQ_元表で、Q_元表を参照して「項目2」列をピボットした時、
自動生成されるのは、おっしゃるとおり、List.Countによる「値のカウント」。
数値だとList.Sumで自動集計される模様。

3つ目のQ_元表_ピボット_自動生成
let
ソース = Q_元表,
ピボットされた列 = Table.Pivot(ソース, List.Distinct(ソース[項目2]), "項目2", "値", List.Count)
in
ピボットされた列

で、List.Countを、List関数のうちから適当に、List.Firstに置換えてみた
ピボットされた列 = Table.Pivot(ソース, List.Distinct(ソース[項目2]), "項目2", "値", List.First)
のが、4つ目の、Q_元表_ピボット_手動_ListFirst。
重複していた「あ」行−「a」列の値は、1文字目の文字コードで若い番号の「AAA」を拾ってきた?

なお、自動生成で個数を拾ってきた3つ目も、列ピボットの詳細オプションで「集計しない」を選ぶと
「あ」行「a」列はErrorで、重複していない他行他列は文字列の「値」を拾ってくる。
https://i.imgur.com/nnDKqPz.png

何をやりたいのかよく分からないけど、ListのM関数でよさげなものがあれば、
https://docs.microsoft.com/ja-jp/powerquery-m/list-functions
目的のものが出来上がるかも知れない。

「『値』列が数値ではなくて文字列で、文字列として全て集めたい(項目1の重複はOK)」
というなら、項目2について1つ1つマージかしら? それだったら元表をソートすれば済んじゃいそう・・・
0120名無しさん@そうだ選挙にいこう垢版2022/03/30(水) 00:29:25.11
>>119
レスありがとうございます。

pngの通り類似の処理はしたのですが、残念ながらうまくいきませんでした。
緑文字でListととなり、一括に束ねられてしまいます。
※束ねられたものを成形する方法ありそうですが、わかっていません・・・

List.Firstやとかではテキストが表示するのですが・・・
List.SourceやList.ReverseだとListになってしまいます・・・
違いは適用したステップが自動生成されているくらいだとは考えています。
0121名無しさん@そうだ選挙にいこう垢版2022/03/30(水) 06:03:24.41
PowerQueryをGUI操作した結果で作られたコードを成形しようとしたら物凄く難しくないですか?

皆さん入り始めはどういう風に触られたんですか?
Microsoftが標準にGUIとして用意された機能を触っていると、
どうにもすこぶる遠回りして覚えてる気がしてならないです・・・

※それぞれ定義された名称が凄く長くなってるのが難易度あげてる気はします

ーーーーーーーーGUIでフォルダ取得時のコードーーーーーーーーーー
let
ソース = Folder.Files("C:\Users\max\Documents\Power"),
#"フィルター選択された非表示の File1" = Table.SelectRows(ソース, each [Attributes]?[Hidden]? <> true),
カスタム関数の呼び出し1 = Table.AddColumn(#"フィルター選択された非表示の File1", "ファイルの変換", each ファイルの変換([Content])),
#"名前が変更された列 1" = Table.RenameColumns(カスタム関数の呼び出し1, {"Name", "Source.Name"}),
削除された他の列1 = Table.SelectColumns(#"名前が変更された列 1", {"Source.Name", "ファイルの変換"}),
展開されたテーブル列1 = Table.ExpandTableColumn(削除された他の列1, "ファイルの変換", Table.ColumnNames(ファイルの変換(#"サンプル ファイル"))),
変更された型 = Table.TransformColumnTypes(展開されたテーブル列1,{{"Source.Name", type text}, {"Column1", type text}})
in
変更された型
ーーーーーーーーーーーーーーーーーーーー
0123120垢版2022/03/30(水) 09:53:33.54
>>122

おはようございます。

知識がなさすぎてどういう情報を提供すればいいのかさえわかっていませんが、
元のデータはフォルダ上にある「ただのテキストデータ」で、
GUIでフォルダごと選択して複数ファイルを引っ張ったものとなります。

丁度121のソースとほぼ同じだとおもいます。
数値とかは入力値としてはありますが、PowerQueryでは計算とかは求めないものと考えています。

諦めの選択にはなっていますが、powerqueryにここまでてこずると思っていなかったこともあり、
直近ではテーブルデータに起こしてから細かい計算とかはExcelの関数で手入力しようと考えています。

Excelの操作手順を以下に記載します。

@Excel新規作成 Aデータの取得-フォルタから B結合 Cクエリエディタその他のクエリから「変換」列のピボット D数式バーでList.Reverseに変換とかを

情報小出しすみません。
データ取得からのデータ成形したいだけなので、クエリが得意とすることだとは考えています。
0129名無しさん@そうだ選挙にいこう垢版2022/04/02(土) 11:50:11.30
そう言えば、ADOだとワイルドカードが%だから、
Accessも%だろうと思ったら実は*で、
フザケンナちゃんと統一しろムキー!ってなったことあるわ。
0130名無しさん@そうだ選挙にいこう垢版2022/04/11(月) 19:20:30.64
クエリ勉強用に書籍を購入検討していますが何かしら比較したことのある書籍あれば教えてください。


レスつくのが時間いると思いますので、
今時点は適当に購入してみて後日感想記載します。
0131名無しさん@そうだ選挙にいこう垢版2022/04/11(月) 19:31:11.43
>>130
クエリってpowerqueryを略して言ってるの?
0136名無しさん@そうだ選挙にいこう垢版2022/04/12(火) 19:59:29.96
月次更新を半年くらい繰り返してきたクエリーを今月更新したら、
こんなエラーメッセージが出てきて更新不能になったでござる。

> Formula.Firewall: クエリ 'Q_Result_byMonth_M04' (ステップ '変更された型') は、
> 前回の評価時には MultipleUnclassified/Trusted データを使用しましたが、現在は
> MultipleUnclassified/Trusted データを使用しようとしています。

参照している元クエリーのステップ '変更された型' と
このクエリーの '変更された型' を作る直してみたものの、改善せず。

"MultipleUnclassified" とはなんぞや?とググった中で、
英語のYouTubeで出てきたこの動画をぼんやり見てたら、
「PowerQueryのオプションで、プライバシーレベルを"無視"にしろ」
と、ささやくではないか・・・
Solve the Formula.Firewall Error in Power Query
https://youtu.be/z_kgvkgU8iI

とりあえずやってみたら、再度動き出すにはしたものの、
機械翻訳された大本営の説明がよくわからずorz

プライバシー レベルの設定 (Power Query)
https://support.microsoft.com/ja-jp/office/%E3%83%97%E3%83%A9%E3%82%A4%E3%83%90%E3%82%B7%E3%83%BC-%E3%83%AC%E3%83%99%E3%83%AB%E3%81%AE%E8%A8%AD%E5%AE%9A-power-query-cc3ede4d-359e-4b28-bc72-9bee7900b540?ocmsassetid=ha104009800&;correlationid=506dcb43-8d8c-4234-8a1a-a798fb3cc18f&ui=ja-jp&rs=ja-jp&ad=jp
0138名無しさん@そうだ選挙にいこう垢版2022/04/27(水) 21:26:09.00
質問です

グループ毎に小計及び総合計を出したいですが、簡単に出来る方法はありますでしょうか?
ネットに乗ってるLetは使い方が良く分かりませんでした
0140名無しさん@そうだ選挙にいこう垢版2022/04/27(水) 22:34:05.38
列数が20ほどありピボットテーブルで横に伸ばすと操作性が著しく劣るためパワークエリで直接編アレンジしてテーブル形式で出力したいです
機能の小計が使えれば良いのですがテーブル形式になってると使えないようです
0144名無しさん@そうだ選挙にいこう垢版2022/05/17(火) 20:43:53.61
フィルターされた行 = Table.SelectRows(テーブル, each Text.StartsWith([#"RowName"], FilterValue))

変数RowNameがうまく認識されず、
「Expression.Error: レコードのフィールド 'RowName' が見つかりませんでした。」
となります。
どうするのがよいでしょうか?
0146名無しさん@そうだ選挙にいこう垢版2022/05/17(火) 23:21:37.74
回答ありがとう。

RowNameは動的に変わる変数で、フィルタ用の文字列ではなく、列名を指してます。
たとえばRowNameが「商品名」だったとき、
・[#"RowName"]→エラー
・[RowName]→エラー
・[商品名]→正常
という感じでした。
RowNameに「商品名」が正しく入っていることは確認済みで、
もちろん列名が「商品名」という列も存在します。

角括弧 [] に変数を入れるときに、とくに気にすることはないと
思っているんですが、どうなんだろう?
0147名無しさん@そうだ選挙にいこう垢版2022/05/18(水) 13:50:53.35
おおよそ認識の通り、角括弧内の文字列に演算子を含む場合には#"〇〇"としてあげるくらい。このエラーには関係ない。
StartsWithはRowNameにFilterValueが含まれるか否かをTrueかFalseで返す関数らしいからそこが問題かと。その意味で「その文字列で始まる文字列が無い」んでしょうね。これ以上はわからん
0148名無しさん@そうだ選挙にいこう垢版2022/05/19(木) 08:23:07.10
>>147
ありがとう
もうちょっと考えてみますわ
0151名無しさん@そうだ選挙にいこう垢版2022/05/31(火) 01:46:15.43
パワークエリで利用するデータはある程度整えてから利用した方が良いのでしょうか

読み込むExcelファイル内に社名や判子を押すセルなど不要なデータがあったりしてちょっと扱いにくいです
特にマージするときに行などがズレてしまいます。

仕方が無いので、パワークエリの扱いがまだよくわからないのもあって素データを編集しています。
素のExcelで不要なセルを削除したりしてからマージします。でも編集するのは面倒だし
素のデータを編集するのは好きではないけど、これは仕方ないことでしょうか。
0152名無しさん@そうだ選挙にいこう垢版2022/05/31(火) 12:15:52.30
PowerQuery自体にデータ整形の機能はあるけど
それにも限界があるかと。

ワークシートの読込みで
行列の規則性ではダメで、罫線だけが頼りの場合だと、
VBAも使わないと整形出来ないかも。

Webページの自動認識である程度テーブルを分けてくれるので、
M言語に罫線も認識する関数があるのかしら?
htmlで配列を検出しているのかどうか、
まだ分からないけど。
0153名無しさん@そうだ選挙にいこう垢版2022/05/31(火) 19:53:17.67
もともとクエリだからね。
データベース並みに構造化されたデータを加工するのが前提。
帳票的なデータをいじるのにはあまり向いてないわな。
0154名無しさん@そうだ選挙にいこう垢版2022/05/31(火) 21:28:54.04
>>152
>>153

ありがとうございます
今日もう一度見直したらエラーやnullが原因で崩れてしまうことがわかり無事統合できました。
今までは不要な行は手動で消していましたがフィルタ機能を使えばできましたね……
0156名無しさん@そうだ選挙にいこう垢版2022/06/01(水) 16:52:33.88
質問が二つありますので宜しくお願い致します

1.  CurrentWorkBook内に作ったピボットテーブルは
  範囲参照では取り込めないというメッセージが出たので、
  Excel WorkBookからの取り込みで作業中のファイルを指定して
  ピボットテーブルのシートをデータモデルに取り込んで作業していました。
  ある程度作業は勧められましたが  突然読み込みエラーでクエリごと
  消えてしまいました。
  作業中のBook内のピボットテーブルからデータを読み込む
  のには制限があるのでしょうか?
  

2. クエリを削除しても、ピボットテーブルをデータモデルから
  作成するときに、削除したはずのクエリがテーブルとして出てきます。
  データモデルを完全に削除する方法を教えてください
0157名無しさん@そうだ選挙にいこう垢版2022/06/01(水) 20:02:45.92
>>156
ようわからんけど、

>1.
ピボットテーブルを参照「元」にすることは、経験的に避けている。
フィルターや構成変えるだけで指定した参照範囲が壊れてしまうから。
何かフィルターを変えたら104万行を超えてしまったとかも。
ピボットテーブルは参照元にはせず、それを最終出力とするかグラフに繋げるかだけにしている。
でなければGETPIVOTDATA関数を使ったこんな場合とか。
https://dekiru.net/article/4481/
さらにいじりたいのであれば、クエリーで絞るかPowerPivot内(DAX関数)でやるか。

>2.
クエリーを作る時、最後に「データモデルに追加する」にチェックを入れてワークシートに読込ませると
シート上のクエリーテーブルとは別に、
PowerPivotで扱われる「データモデル」としても同様のテーブルが作られると理解。
これがワークシート上限104万行を超えて扱えるヤツ(その場合は「接続のみ」で利用)。

当該クエリーも削除した後で、後者を削除するには、
(他のクエリーがあれば、そこをアクティブにするとメニューに「Power Pivot」が現れる)
 Power Pivot - 管理
で、PowerPivot上の当該シートタブを右クリックで削除。
0158名無しさん@そうだ選挙にいこう垢版2022/06/02(木) 13:49:56.88
>>157
ありがとうございます。ピボットテーブルはやはり参照元にしない方が良いのですね。
確かに集計項目を変えた時にエラーが出ました。

今やりたいのは例えば、下記のようなテーブルがあったとして
売上100以下の商品はその他というくくりにして集計したいのです


商品    カラー    売上
A      赤      100
A      青       50
A      黄       10
B      赤       70
B      青       20
C  赤       90
C      青       20
D      赤       20
D      青       50

上記の表を

商品   売上
A     160
C     110
その他  180

このように加工して、その表を再びテーブルとして使用したいのです。
私はピボットテーブルを使ってしまったのですが、このような場合に使える方法がありましたら、教えてください。
0159名無しさん@そうだ選挙にいこう垢版2022/06/02(木) 14:19:05.73
ピボットテーブルの参照元データはpowerqueryから見られないの?
powerqueryで参照元データを直接いじれば良いのでは?
0161157垢版2022/06/02(木) 22:03:48.12
>>160 が言うとおり、グループ化でやってみた。

とりあえず成果品の画像。
https://i.imgur.com/399Bh2k.png

1. 最初のQ_DataはテーブルT_Data(青)をクエリー化しただけ。(接続のみ)

2. 2つ目のQ_合計売上100超は商品でグループ化して、その売上合計を出し
https://i.imgur.com/8vxZzwH.png
フィルターで100超だけに絞ったもの。(接続のみ)

3. 3つ目のQ_合計売上100未満は、同様に、売上合計が100未満に絞って(商品BとD)、
その合計の答えをリスト形式で出せるから、
https://i.imgur.com/rtfVOYD.png
テーブルに変換、
https://i.imgur.com/VUKKfcp.png
行タイトルを"Column1"から2つめと同じ「カウント.売上 の合計」に変更、
「商品」列を追加して値を"その他"とし、
列順を2つ目と同様に並べ直した。(接続のみ)

4. 4つ目のQ_追加統合が2つ目に3つ目を追加したもの。(シートに読込み)

ちなみに「その他」の合計は180ではなく160の模様。

これなら二次利用の参照元にも出来るべ。
0162157垢版2022/06/02(木) 22:08:25.55
>>161 の追記
2.と3.のクエリーは1.を参照
0163157垢版2022/06/02(木) 22:11:18.45
>>161 の訂正
100超と100未満じゃ、「100」が抜けてまう...orz
そのあたりはよしなに。
0164名無しさん@そうだ選挙にいこう垢版2022/06/02(木) 23:14:56.46
質問させてください

折れ線グラフで毎日の温度データを表示しています
・基準値を超えた日に任意の文字を表示させる
・位置はデータに追従させる
ということはできますか
ヒントに入れてカーソルを合わせたら表示されるのではなく、常に表示した状態にしたいです
0165名無しさん@そうだ選挙にいこう垢版2022/06/02(木) 23:33:25.04
>>164
「任意の文字」とは何?

データラベルとして、日付や温度以外の、
元表中の「任意の何か」の列の値を
ラベルオプションの「セルの値」設定で表示すること?

であれば、PowerQueryというより、
VBAで系列と要素番号とかを指定して
データラベル表示させることになるのかと。
0168名無しさん@そうだ選挙にいこう垢版2022/06/08(水) 00:06:55.79
某アプリから出力されたCSVファイルを使って、その右側に何列にも渡ってピボットテーブルに使用できる関数の入った
セルを作ったエクセルファイルがあります。
これに毎週追加されるCSVファイルのデータを追加していくのですが、当初、単純に作ったエクセルファイルに
追加CSVファイルの値だけをコピペして、右側の関数セルはオートフィルで追加すればいいかと考えていたのですが、
PowerQueryなる便利なツールでもっと効率的にできそうというのがわかりました。
質問は以下になります。

1.すでに作られたエクセルファイルの書式(テーブル化されてます)で、CSVの追加データをPowerQueryでインポートするにはどうすればいいでしょうか。
(各列のタイトルは追加CSVと全く一緒です)
2.PowerQueryにまったくの無知でも、PowerQuery上で関数の入った列も入れてしまった方が良いでしょうか。

色々ググってみましたがさっぱりわかりませんでした。
Amazonで参考書注文してきたので今後勉強していきますが、とりあえず上記がサルでもできるほど簡単なら教えてください。
よろしくおねがいします。

↓こういう状況です。
https://i.imgur.com/Bi79f98.png
0169名無しさん@そうだ選挙にいこう垢版2022/06/08(水) 00:13:12.49
>>168
すみません、図の追加CSVにある左の番号は11から続く出力データです。
0171名無しさん@そうだ選挙にいこう垢版2022/06/08(水) 01:29:41.21
>>168
1. 週ごとのcsvを(あるいはそれを読込んだExcelファイルを作って)、
同じフォルダに入れておく。

2. これらを通しで集計するには、別ブックから「データの取得 - フォルダから」で、
全てのファイルを結合出来る。
・「パラメータ」を使う「ヘルパークエリ」が自動作成されるが、
 カスタマイズはそんなに難しくない。
・参考動画
 https://youtu.be/RCmoho3jU8Q
 https://youtu.be/VxKoqBJWgRo
 https://youtu.be/TvIsvzGiQTU
 https://youtu.be/uLV85sauJRw
 等。
・このクエリーの中で「新しい順」にソートするステップを入れておけば良い。
・1. を毎週やっていれば、最新の通し集計は、このクエリーを更新するだけ。

3. 関数計算の展開は、2.のファイル内で各週csv等を
結合してから展開する方が吉。
1.の各週ファイル内に関数計算を仕込んでおいても良いけど、
追加や変更が出たとき、全部直さなきゃならなくなるから。
0172171垢版2022/06/08(水) 01:43:56.70
>>171
> 3. 関数計算の展開は、2.のファイル内で各週csv等を
> 結合してから展開する方が吉。

とは書いたものの、
・1週分のデータが数千行以上
・結合した後の合計数万行以上
・横列に展開する関数列がやたら多い
なんてことで、2. のブックの処理速度が落ちるというのであれば、
計算負荷分散のため、
1. のファイル内で関数計算を展開しておくことはあり得る。
0173171垢版2022/06/08(水) 01:51:10.39
でなきゃ、各週分を取り込んだとき、2.のブックのワークシートには読込ませず、
データモデルにしておくのも一つの手。

データモデル内で右に列を追加しての関数計算は可能。
データモデルだとワークシート104万行の限界を超えられるし、
これをピボットテーブルのデータ元にすることも可能。

とかやってるうちに、欲が出てきてPower Pivot、DAX関数の沼にはまったが。
0174168垢版2022/06/08(水) 02:18:46.15
>>171
むちゃくちゃ親切にありがとうございます!
1週分のデータはせいぜい100〜200行ぐらいで、結合後もまだ3000行弱なので最初のやつで大丈夫だと思います。
とりあえず動画見てみます!
0175名無しさん@そうだ選挙にいこう垢版2022/06/28(火) 11:20:25.93
PowerBI上で重回帰分析は実施できますでしょうか?
0177名無しさん@そうだ選挙にいこう垢版2022/06/28(火) 13:40:02.58
>>176
ありがとうございます。
変数の選定は出来ますね。直接式を求めることは出来なそうです。
式は別途求めればいいのかなぁ。
0178名無しさん@そうだ選挙にいこう垢版2022/07/01(金) 17:58:50.96
お願いします
組織アカウントのPower BIワークスペース上に、いつからか他者が作成したレポートが表示されています
どうにかワークスペース内から表示を消したいのですが、方法をご存知の方いらっしゃいませんでしょうか
0179名無しさん@そうだ選挙にいこう垢版2022/07/26(火) 11:01:08.73
ExcelでPower Queryを触りはじめたのですが、
Table1とTable2それぞれの特定列が一致した場合に
一致した行だけを集めてTable3を作る、
といったことも可能でしょうか
0183名無しさん@そうだ選挙にいこう垢版2022/07/27(水) 20:06:48.57
>>182
無粋だな

>>180-181の流れで完璧だったのに
0185名無しさん@そうだ選挙にいこう垢版2022/08/01(月) 12:38:51.85
webからの取得で認証フォーム突破出来なかったから調べたけどBASIC認証のみなんやね
カスタムから出来るかもしれないて回答してる人いるだけでやり方はどこにも書いてなかった
認証フォームあるようなやつスクレイピングしたいならPythonとかプログラミング学んだ方が早いんかな
0186名無しさん@そうだ選挙にいこう垢版2022/08/16(火) 10:17:32.13
Power Queryで捨て仮名をナミ字に変換するにはどうすればいいんでしょう
ぁぃぅぇぉゃゅょゎっ それぞれを、
あいうえおやゆよわつ にしたいのですが、上手いやり方を思い付けません
0187名無しさん@そうだ選挙にいこう垢版2022/08/16(火) 13:03:37.37
変換テーブルを使う考え方でなんとかできました
もっと上手いやり方があるようでしたら教えてください
以下が今回やった方法です
= List.Accumulate(Table.ToRows(#table({"捨て仮名","ナミ字"}, {{"ァ","ア"},{"ィ","イ"},{"ゥ","ウ"},{"ェ","エ"},{"ォ","オ"},{"ャ","ヤ"},{"ュ","ユ"},{"ョ","ヨ"},{"ッ","ツ"}})),[カナ],(x, y)=>Text.Replace(x,y{0},y{1})))
0191名無しさん@そうだ選挙にいこう垢版2022/08/31(水) 15:07:50.25
Power Queryでクエリの並び替えってできますか?
今は新しいExcelブックをつくってクエリをコピペするという不毛な作業をしています
0192名無しさん@そうだ選挙にいこう垢版2022/08/31(水) 15:29:32.86
>>191
手動のドラッグによる並べ替えの話でいいの?

Excelの「クエリと接続」ペインだと右クリックメニューで一段ずつ上か下だけど、
いずれかのクエリーを編集で開いて
Power Query エディターの左ペインでやれば、
ドラッグで飛ばして並び替えは可能だけど。
0194名無しさん@そうだ選挙にいこう垢版2022/09/01(木) 08:59:15.50
他のブックへのクエリーのコピーは
PowerQueryのスクリプトをまるまるコピペで。

ワークシートの定義名範囲や、
クエリーでないテーブルの参照をクエリー内でしているときは、
それらも再構築が必要だけど、
名前定義の範囲のコピペは、
「(当該)ブック」とか「(当該)ワークシート」とか、
その有効「範囲」の作り直しが必要だったかと。
でないと「他ブックのリンク」になってしまうので要注意。
0195名無しさん@そうだ選挙にいこう垢版2022/09/11(日) 17:18:15.63
Table.AddColumn(ソース, "新列名", each [旧列名]*1000)の 旧列名 の部分を変数にするにはどうしたら良い?
0197名無しさん@そうだ選挙にいこう垢版2022/09/12(月) 06:51:38.13
>>195
それは俺も知りたい。
任意の列名変更は、一度ピボット解除して列名を縦にして、
if Text.Contains() then else
とかで検索と置換が出来るようにすれば良いのか?
エロい人、教えて。
0198名無しさん@そうだ選挙にいこう垢版2022/09/12(月) 18:47:41.90
>>195
自己解決した
Table.AddColumn(ソース, "新列名", each Record.Field(_, "旧列名")*1000)

>>197
列名の変更は {"旧列名", "新列名"} で両方とも文字列で指定だから問題の質が異なる
テーブルから列名検索したいなら
探した列名=List.Select(Table.ColumnNames(前の処理), each 検索条件)){0} //見つかった最初のもの
で得た列目使って {探した列名, "新列名"} とかにすればいい
0199名無しさん@そうだ選挙にいこう垢版2022/09/13(火) 19:06:53.79
>>198
ん?

よく分からんけど、それで「旧列名」の部分が変数扱いになったの?

Record.Field関数の2番目の引数はレコードの中の特定の列名だから、
思い切り定数で"旧列名"と指定していることになってるのかと。

1番目の引数のアンダースコアはeachとセットみたいだけど、
レコードの代名詞みたいになっているのかしら?

列名を変数にするって例えば、
column1、Column2、column3・・・
と元データを読込むたびに列が増えるような場合で、
最後の列が合計かなんかで、
それを1000倍にする列をさらに追加したい時、
元データの、変化する最後の列名を変数で扱いたいのかと思ってた。
0200sage垢版2022/09/28(水) 10:15:26.54
Power BIのテーブルで、列名を縦書きにできませんか?
0202名無しさん@そうだ選挙にいこう垢版2022/09/28(水) 19:45:35.61
列名を文字のリストに分割してから改行文字を間に挟んで結合する
M言語の関数でできる
得られた文字列で列名変更
0204名無しさん@そうだ選挙にいこう垢版2022/10/09(日) 08:15:09.14
使えません
0206名無しさん@そうだ選挙にいこう垢版2022/10/27(木) 09:56:09.11
連続した1時間ごとのデータがあって、
ある閾値を下回った連続時間帯が年間で最大何コマだったのかを調べたい。
(例えば、風力発電の年間出力データとか、気温の年間データとか)

下回った時間帯のフラグ列作って、
グループ化してその中でインデックス振って、
List.Sum(List.FirstN())で累計を取ろうかと思ったが、なんか上手く行かない。

List.Accumulateで累計するにも、
グループ化とインデックス、List.FirstN()は要るよね?
List.Accumulateの公式説明がよく分からない。

助けて。
0208名無しさん@そうだ選挙にいこう垢版2022/10/31(月) 16:24:38.27
表示したいグラフは意味的にはソフトウェア開発における不具合検出数のグラフです。X軸は日付、Y軸は検出した不具合の数の累計と解決した不具合の数の累計です。
0209名無しさん@そうだ選挙にいこう垢版2022/10/31(月) 16:31:15.24
不具合は課題管理システムで管理していますが、PowerBIへの入力は課題管理システムからエクスポートした不具合一覧です。1行が1件の不具合を表します。1行を構成する列のうち、不具合の連番、不具合の状態(解決済か未解決か)を元データに不具合の累計件数と解決済み不具合の累計件数を時系列に表示させたいです。
0210名無しさん@そうだ選挙にいこう垢版2022/10/31(月) 16:40:01.25
X軸に不具合報告の作成日を指定し、Y軸にクイックメジャーのタイムインテリジェンスから何か選ぼうとしましたが、一番期間が長い選択肢でも年度累計までです。年度累計を選ぶと年度の変わり目で累計件数が0に戻ってしまいます。表示させたい事は年度関係なしの累計です。
0214名無しさん@そうだ選挙にいこう垢版2022/10/31(月) 20:32:31.97
要件を書き込むとソリューションが出てくるスレです。
0218名無しさん@そうだ選挙にいこう垢版2022/11/01(火) 06:49:20.30
1から10まで答えてほしいってこと?
0222名無しさん@そうだ選挙にいこう垢版2022/11/05(土) 07:46:09.06
別に104万行超えるわけでねぇーべ?
全期間のファイル、クエリーで読込んで結合したらよろし。
1つのフォルダにファイル突っ込んどいて
フォルダ指定で全部結合する方法は
あっちこっちで解説されとるがな。

104万行超えでも
データモデルにしてから集計クエリーで期間絞ればよろし。
遅いけど。
0224名無しさん@そうだ選挙にいこう垢版2022/11/06(日) 06:55:46.45
0から始まるインデックスを各行にふって
直前のステップ名が「A」とした場合、

前月比 = [売上] / A[売上]{[インデックス]-1}

最初の行がErrorになるのがイヤなら、後からエラーをnullに置換するか、

前月比 = if [インデックス] = 0 then null else [売上] / A[売上]{[インデックス]-1}

とか。

https://analytic-vba.com/power-query/m-code/begin-previous-ref/
0225名無しさん@そうだ選挙にいこう垢版2022/12/19(月) 01:36:52.50
属性の列にA B C D E…と項目があり、値列に対応する数値が入っています。散布図の縦軸横軸どちらも、値を選択して、X軸はAの値、Y軸はBの値、の様なことをしたいです。スライサーを軸別に設定するようなこと可能でしょうか?もしくは、データテーブルの作り直しから必要でしょうか。
0226名無しさん@そうだ選挙にいこう垢版2022/12/19(月) 06:30:25.65
PowerPivotでメジャー作成かな
0228名無しさん@そうだ選挙にいこう垢版2022/12/19(月) 13:26:23.57
>>225
仕様で、ピボットテーブルから直接、散布図やヒストグラム、箱ひげ図、株価あたりのグラフは作れなかったかと。

例えば、気象庁サイトからDLできる気象観測データがイメージが似ているか?
1時間値の場合、
対象年月日時間帯 観測項目 値
2022/12/19 12:00 気温 9.6
2022/12/19 12:00 降水量 0
2022/12/19 13:00 気温 10.1
2022/12/19 13:00 降水量 1
2022/12/19 14:00 気温 11.3
2022/12/19 14:00 降水量 2
・・・みたいなリスト型データに加工済みとか?

この場合、ピボットテーブルのフィルターだけ設定してスライサーを作る、例えば、
・観測項目を属性にして(スライサー対象可)
・対象年月日時間帯から年や月、時間帯を取り出して別列のパラメータにし(スライサー対象可)
・時間帯をX軸、値をY軸にして、
・スライサー選択のたびに、別に用意した属性(観測項目)フィルターするグラフ集計用クエリーをVBAで更新する
Private Sub Worksheet_PivotTableChangeSync(ByVal Target As PivotTable)
Dim tbl As ListObject
Set tbl = ThisWorkbook.Sheets("グラフ用集計").ListObjects("Q_グラフ用集計")
tbl.QueryTable.Refresh BackgroundQuery:=False
End Sub
なんてことで、時間帯推移での気温、降水量を切り替えられる(年または月切替えも可)散布図を作る
みたいなことは可能だけど。

X軸を対象年月日時間帯にすることも可能だが、
それじゃ散布図でなくてただの折れ線グラフで十分で、
ピボットテーブルでも可能。
0229228垢版2022/12/22(木) 22:38:20.74
たとえば風速の観測地点・年別の月展開箱ひげ図を
このやり方 >>228 でやるより、
PowerBIでやった方が遥に軽かった。
0230名無しさん@そうだ選挙にいこう垢版2022/12/23(金) 00:27:17.32
月別の集合グラフで半期だけ色変えたりフィルタ変えることはできますか?
4~9月は実績で10~3月は計画値を表示したいです。
0231名無しさん@そうだ選挙にいこう垢版2022/12/23(金) 07:04:20.22
「集合グラフ」って、積み上げ棒グラフでない、通常の棒グラフ?
実績値と計画値の系列を分けたら色は変えられるけど、
ひと月の幅がやたらと広がってしまうので、
実績月/計画月の判断をシート上のセルで計算して、
それを頼りにVBAで色を変えることくらいしか
思いつかない。
0233名無しさん@そうだ選挙にいこう垢版2022/12/26(月) 08:13:37.47
PowerBIなんですが、カードで値を表示してフィルタしたときに、レコードがない場合(空白)って出てカッチョ悪いのですがこれを非表示にしたり別の文字に置き換えることって出来ますか?
0238名無しさん@そうだ選挙にいこう垢版2023/02/04(土) 08:23:09.98
なるほど経理が使うのに大事なのは
クエリーで読み込む時に
日付を元にして期首からの経過月の列を作っておくことなのか
EXCELはアメリカ産だからデフォルトが12月決算になってしまうのな
0239名無しさん@そうだ選挙にいこう垢版2023/02/04(土) 19:16:46.33
自然科学や工学系ではExcelをメインでは使ってないだろうけど、
分析するには、秒や分単位時系列のカレンダーは要るのかと。

ロガーからデータ取って散布図や相関図作るにしても、
データがNAのところも表記しないと、
おかしな事になりそうだと想像。
0241名無しさん@そうだ選挙にいこう垢版2023/02/23(木) 19:32:25.67
>>237
PowerBIなんですが、フィルタされたときに連動するグラフY軸の最小値や最大値を指定できますか?

はい、Power BIではフィルタリングされたときに連動するグラフのY軸の最小値や最大値を指定することができます。以下の手順で設定できます。

レポートの編集モードに移動します。
フィルタリングされたいデータを選択し、フィルターを適用します。
フィルタリングされたグラフを選択します。
右側のプロパティウィンドウで、軸の設定をクリックします。
「軸の最小値」または「軸の最大値」をクリックし、値を入力します。
「変更を保存」をクリックして、変更を適用します。
これで、フィルタリングされたときに連動するグラフのY軸の最小値や最大値を指定することができます。
0243名無しさん@そうだ選挙にいこう垢版2023/04/24(月) 00:36:41.46
マージする時にキー列が一意でない場合、左×右=で行、レコードが増殖するバグは解決不可能でしょうか?
0245名無しさん@そうだ選挙にいこう垢版2023/04/24(月) 08:12:12.97
>>244
申し訳ありません
左×右の左が多い場合、左の行分右の行が増えるというのは仕組み上分かります
しかしながら左の行が増幅する仕組みがまだよく分かっていません
0246名無しさん@そうだ選挙にいこう垢版2023/04/24(月) 19:47:36.75
バカにつける薬はありません
0249名無しさん@そうだ選挙にいこう垢版2023/04/25(火) 20:44:18.56
重複の削除はなぜTable.Bufferがデフォルトで用意されていないのでしょうか?
重複の削除で削除対象に選ばれる行、レコードになにか法則性はあるのでしょうか?
0250名無しさん@そうだ選挙にいこう垢版2023/04/27(木) 22:14:38.20
Table.Bufferと
グループ化からのインデックス追加
する方法で重複を削除する時に何か違いはありますか?
グループ化からインデックスを追加する方がステップ数が増えて処理が多くなりそうな気がします
0251名無しさん@そうだ選挙にいこう垢版2023/04/28(金) 05:55:30.09
Table.Bufferって重複削除するの?
0252名無しさん@そうだ選挙にいこう垢版2023/04/28(金) 08:12:46.53
>>251
重複する列があって、その隣に日付順やインデックスの列があったとして
日付やインデックスを降順に並び替えた後に重複を削除したとしても
その並び替えは無効でなんらかの規則性に基づいて重複行が削除されます
しかしTableバッファを組み込むと並び替えられた状態で一番上の行だけが残ります

この方法とグループ化→インデックス列追加→0だけフィルターする
の違いは何かなと
0253名無しさん@そうだ選挙にいこう垢版2023/04/28(金) 10:20:50.05
Table.Buffer方式は内部実装任せ
グループ化→インデックス列追加方式は自分で完全制御したい
0254名無しさん@そうだ選挙にいこう垢版2023/04/28(金) 13:09:34.60
>>253
ありがとうございます
助かります
0256名無しさん@そうだ選挙にいこう垢版2023/04/29(土) 19:29:05.45
Table.Bufferは、ストリーミングというpowerqueryの基本戦略に反するから、内部的にやることは絶対に無いと思う
0257名無しさん@そうだ選挙にいこう垢版2023/04/30(日) 21:17:43.50
初歩的な質問になるとは思いますが
ブックを読み込んだ時に10万行も読み込まれてしまう時があります
これは一番下の行まで0か何かしらの値が入力されているからなのでしょうか?
0258名無しさん@そうだ選挙にいこう垢版2023/04/30(日) 22:21:52.64
>>257
元ブックの、テーブルでなくてワークシートを読込んでいるの?

元ブックのワークシートで、本来読込みたい行数は何行?
元ブックの当該ワークシート開いて、Ctrl+Endで最右下行に移動したら、何行目まで行く?
0259名無しさん@そうだ選挙にいこう垢版2023/05/04(木) 15:37:23.40
>>258
なるほど
テーブルではなくブックやワークシートそのものを読み込んだ場合に何もない空白の行が読み込まれてしまう場合があるという事ですね
それは盲点でした


クエリのマージに頼るよりもリレーションシップで出来る事は極力(最大限に)リレーションシップで済ませた方が動作は軽いですか?
0260名無しさん@そうだ選挙にいこう垢版2023/05/04(木) 15:59:34.63
powerqueryでリレーションシップて何?
0261名無しさん@そうだ選挙にいこう垢版2023/05/04(木) 16:02:50.50
>>260
ピボットテーブル(?)でしたね!
0262名無しさん@そうだ選挙にいこう垢版2023/05/04(木) 19:20:03.72
全てのデータがデータベースに(一行、1レコード)揃っている状態が正規化されていない状態、あるいは第一正規化で
これ以上ないくらいに重複を排除した、それぞれ別のデータベースにしたのが第三正規化ですか?
0263名無しさん@そうだ選挙にいこう垢版2023/05/04(木) 20:14:18.31
>>259
実データが数万行程度までなら、
ピボットテーブル(PowerPivot)でのリレーションでも
PowerQueryのマージでも速さは同じぐらいの印象。

104万行超とかの大きなデータを扱うんだったら、リレーションの方が速いか?
ようつべで比較動画上がってたような?

ただ、ピボットテーブルにすると、その後はグラフにするしかなく、
ピボットテーブルのまとめ方が使えそうだったら、最後の段階に使っている。

まだ加工や二次利用が続くんだったらPowerQueryにしている。
0264名無しさん@そうだ選挙にいこう垢版2023/05/04(木) 21:26:21.36
>>263
そうですよね
リレーションシップはピボットテーブルで活用するしか使い道はないですよね(?)
結合に比べると自由度が低い(?)
0266名無しさん@そうだ選挙にいこう垢版2023/05/04(木) 22:00:16.82
>>265
ありがとうございます
0267名無しさん@そうだ選挙にいこう垢版2023/05/04(木) 23:04:13.08
第三正規化はこれ以上ないくらいに細分化している
第二正規化は複数の状況証拠(条件)があるから推移的関数従属が決定する
第一正規化はデータベース
ってコト、、、?
0268名無しさん@そうだ選挙にいこう垢版2023/05/05(金) 21:35:12.90
>>267
第一正規化はフィールドを定義するために必要
買い物した人のレコードに商品1、商品2、商品3、…って無限にフィールドを作るのを防ぐ
第二正規化で重複データを分離
経理システムかなにかのCMでやってる、何度も同じデータを入力する必要がなくなる
第三正規化し第三正規形にすることでマスタデータとトランザクションデータを完全に分離できる
非正規形含む正規形はすべてデータベース
今は第六正規形まで定義されてる
0269名無しさん@そうだ選挙にいこう垢版2023/05/06(土) 08:30:19.91
>>268
ありがとうございます
今までデータベースなんて考えた事はあまりなかったです
0270名無しさん@そうだ選挙にいこう垢版2023/05/12(金) 07:31:39.40
二つの表があって変更された行を表示させるのはやはりパワークエリでしょうか?
0271名無しさん@そうだ選挙にいこう垢版2023/05/12(金) 11:11:08.97
>>270
数百行程度なら、チェックする列数にもよるけど、ワークシート関数でも可能かと。
ただ、基準表と比較対象表をいろいろ入れ替えるんだったら、
ちと面倒かも。

行数が万単位なら、PowerQueryかな。
同じ表形式なら、基準表と比較対象表の入れ替えも楽だし。
20列とかの全列チェックするんだったら、
クエリー更新もそれなりに時間かかると思う。
0272名無しさん@そうだ選挙にいこう垢版2023/05/12(金) 12:45:44.93
>>271
ありがとうございます
0274名無しさん@そうだ選挙にいこう垢版2023/05/18(木) 23:07:29.26
共通の処理まで進めて処理を分岐させようと思います。
そのときに、「複製」を使って処理を分岐させるのと
コピーを使って処理を分岐させるのでは複製の場合はバグが発生しますか?
参照だと分岐元に変更を加えない限りはエラーが発生しませんか?
0275名無しさん@そうだ選挙にいこう垢版2023/05/19(金) 21:31:18.51
パワークエリで消費メモリを削減するためにはどの様なポイントがありますか?
0276名無しさん@そうだ選挙にいこう垢版2023/05/20(土) 10:04:59.78
ステップの早い段階で不要な列や行を削除する
0277名無しさん@そうだ選挙にいこう垢版2023/05/20(土) 12:07:29.56
>>276
ありがとうございます
0278名無しさん@そうだ選挙にいこう垢版2023/05/20(土) 12:42:19.18
ちなみになのですが、たった3000行未満の表をList.Containsでフィルターしたり、マージしたりした後に2つ複製をして複製したクエリをそれぞれステップを書き加えてもエラーは起きませんよね?
0279名無しさん@そうだ選挙にいこう垢版2023/05/20(土) 14:40:14.51
複製?参照じゃなくて?
0280名無しさん@そうだ選挙にいこう垢版2023/05/20(土) 15:47:46.17
>>279
はい
複製です

私は複製のことをコピーそのものだと勘違いしておりました
複製では依存先(?)依存関係にあるクエリまで複製されないので複製したクエリを実行しても動かないのですね

参照で別のクエリを作成し(わかりにくい表現かもしれませんが)作成したクエリに追加の作業を行うと参照元のクエリが書き換わる、変更されるものだと勘違いしておりました

複製ではなくコピーの方がいいのですね
0281名無しさん@そうだ選挙にいこう垢版2023/05/20(土) 21:02:05.11
データソースであるexcelファイルを参照してるんだけど
上書きしても同じファイル名なら更新すれば読み込んでくれる?
0283名無しさん@そうだ選挙にいこう垢版2023/05/25(木) 18:43:27.97
フォルダからファイルを接続して読み込んでいましたが不要になったので該当するクエリを削除し、フォルダを削除しました
しかしクエリを更新する時にファイルがありませんとエラーメッセージが表示されます
どうしたらいいでしょうか?
0284名無しさん@そうだ選挙にいこう垢版2023/05/25(木) 20:55:40.89
>>283
もしかして、そのクエリー、
「読込み先」の時に、ワークシートにテーブルとして読込んだだけでなくて、
「このデータをデータ モデルに追加する」にもチェック入れて読込んでない?
なので、テーブルとクエリーを削除しても「接続」が残っているのかと。

よく分らないけど、
メニューバーの「データ」から「クエリと接続」の右ペインで、
「接続」のタブに何か残っているようだったらそれを削除、
あるいは、メニューバーに「Power Pivot」が出るんだったら、
そこの「管理」開いて、何らかのスプレッドシートみたいなのがあれば、タブで削除、
するとか?
0285名無しさん@そうだ選挙にいこう垢版2023/05/25(木) 21:30:41.91
>>284
ありがとうございます
データモデルに追加する
にチェックを入れると動作が軽くなるとか早くなると聞いていたので何でもかんでも追加していました
0287名無しさん@そうだ選挙にいこう垢版2023/05/25(木) 22:24:12.84
頻繁にメモリ不足エラーを吐かれるんだけど一体なんなんだろうか?
私がデータモデルに追加しているからなんだろうか、それともデータソースを追加して、そのまま編集して、そこから次に読み込むで接続オンリーにしているからなんだろうか?
0288名無しさん@そうだ選挙にいこう垢版2023/05/25(木) 22:28:06.99
クエリのコピーや参照もいいですが、
ファイルそのものをコピーして分けて作成するのもいいですね
0289名無しさん@そうだ選挙にいこう垢版2023/05/26(金) 16:42:48.05
「データモデル」と「ワークシートにテーブル」の両方読込むと、
メモリーの制約からか、ワークシート側のソート、
特に複数列ソートが思い通りにならなくなったりしない?
104万行以上もワークシートには当然読み込めないし。

なんとなく、
・リレーションシップやDAX関数使わないんだったら、「データモデル」には追加しない。
・使うんだったら接続のみ(それでもソースとして参照したクエリーはワークシートにテーブルとして落とせたような・・・)
にしてるんだけど。
0290名無しさん@そうだ選挙にいこう垢版2023/05/26(金) 21:32:07.23
ワークシートに出力しているクエリをデータモデルに追加するとバグを起こす可能性があるのですね
0291名無しさん@そうだ選挙にいこう垢版2023/05/29(月) 19:49:38.16
サーバーから吐き出されるCSVのファイル名を変えられちゃったんだけど
powerqueryのクエリで違うファイル名に変更できる?
0292名無しさん@そうだ選挙にいこう垢版2023/05/29(月) 20:19:53.36
できる
0295名無しさん@そうだ選挙にいこう垢版2023/05/30(火) 22:37:21.20
>>291
中身自体が違えば難しいのでは
0297名無しさん@そうだ選挙にいこう垢版2023/06/01(木) 20:08:58.26
欧州の電力需給実績リアルタイム15分値のチャートがWeb公開されているんだけど、
https://energy-charts.info/charts/power/chart.htm?l=en&c=DE&stacking=stacked_absolute_area
これってPower BIベースなのだろうか?

日本の電力需給1時間値でマネして、
「折れ線グラフおよび積上げ棒グラフ」で再現できないかやってみた。

が、
1時間値の積上げ棒グラフの幅が、
最初はこのくらい狭く表示できたんだけど、
何かの拍子に広がってしもうた。

視覚化の「列」が積み上げ棒グラフのプロパティっぽいんだが、
「カテゴリの最小幅(px)」の最小値が「20」で、
これより細かくできない。

何かやり方あるのだろうか?
0298名無しさん@そうだ選挙にいこう垢版2023/06/01(木) 20:10:35.43
パワークエリでフォルダからブックを読み込む時にシート2のみ取り込む方法はありますか?
0300名無しさん@そうだ選挙にいこう垢版2023/06/01(木) 20:36:36.70
>>298
目的のフォルダ指定してPower Queryエディター開いたら、
ステップを最初の「ソース」だけ残す。

kind列でsheetだけ絞るフィルターかけて
Item列にsheet名が出てるはずだから
またフィルターでそれだけ絞る。

1行だけになったらData列だけ残して他の列を削除。
中の緑色の文字"Table"をクリックすれば、
目的のsheetが開く。
そのステップも自動で追加される。

あとは型の変更なり計算なり、
ステップを増やしていくのはお好きなように。
0301名無しさん@そうだ選挙にいこう垢版2023/06/01(木) 20:41:47.20
>>300
ありがとうございます😊
Bing君に聞いても上手く答えを出してくれなくて
0303名無しさん@そうだ選挙にいこう垢版2023/06/03(土) 06:09:29.87
完全外部結合させた時にキー列のnullに右部のキー列を入れるにはどうしたらいいでしょうか?

完全外部結合と論理和は何が違うのでしょうか?
Bing AIくんお尋ねしたら完全外部結合は表を結合させるもので、論理和はAUBだから概念は違うけどどちらも全てという意味では似てると言われました
0305名無しさん@そうだ選挙にいこう垢版2023/06/03(土) 10:00:39.71
>>303
条件列作って、[キー列]がnullなら[右のキー列]、それ以外は[キー列]
キー列を削除
作った条件列をキー列の名前に変更

M言語を直接編集する気があるならキー列を直接変更する方法はあるよ
0306名無しさん@そうだ選挙にいこう垢版2023/06/03(土) 17:51:17.37
>>305
M言語?はちょくちょく触らせてもらっています
それ自体は簡単そうなので気になりますね

話が変わりますがテーブルに読み込んでいるクエリだけ(?)データモデルに追加するを止めるようにしたらあれだけ出ていたメモリ不足エラーやその他のエラーがぱったり消えました
やはりバグなんですね
0307名無しさん@そうだ選挙にいこう垢版2023/06/03(土) 18:25:50.26
>>306
= Table.ReplaceValue(前のステップ, each [キー列],each if [キー列] = null then [右のキー列] else [キー列],Replacer.ReplaceValue,{"キー列"})
0308名無しさん@そうだ選挙にいこう垢版2023/06/03(土) 18:32:00.29
あれ?これで十分なのかな?
= Table.ReplaceValue(前のステップ, null, [右のキー列],Replacer.ReplaceValue,{"キー列"})
試してみて
0309名無しさん@そうだ選挙にいこう垢版2023/06/03(土) 18:32:02.67
一つ聞きたいのですが
パワークエリで横に長いテーブルを読み込み編集します
そのシートの下でも上でもいいので集計行を追加する事は可能でしょうか?


次にそのクエリを参照したクエリで行列入れ替えを行い、見出し列を行に並び替えます
見出し行の隣に参照元の集計行を行列入れ替えで追加できますか?
0310名無しさん@そうだ選挙にいこう垢版2023/06/03(土) 18:41:24.85
5ちゃん GTPもBing AIも凄いなぁ
0311名無しさん@そうだ選挙にいこう垢版2023/06/03(土) 19:36:50.80
ちなみになのですが昨日サイトで完全外部結合した後にキー列をカスタム関数のifで結合すればいいという事のを見て自分で実践してみましたが=が二つになってしまい、なんとかトークンが必要ですというエラーが出てきました
あれは何が問題だったのでしょうか?
BingAIに聞けばよかったですね
0312名無しさん@そうだ選挙にいこう垢版2023/06/03(土) 22:24:43.95
>>307
eachが必要
= Table.ReplaceValue(前のステップ, null, each [右のキー列],Replacer.ReplaceValue,{"キー列"})
0313名無しさん@そうだ選挙にいこう垢版2023/06/03(土) 22:48:35.75
>>311
「トークンが必要」というエラーは
詳細エディターで手入力でM言語式を書いたとき、
うっかり間違える「前のステップ」名。

でなきゃ、途中ステップの最後に "," を忘れたか、
最終ステップ(in前)の最後の記述に余計な "," を入れた
だったか。
0314名無しさん@そうだ選挙にいこう垢版2023/06/03(土) 23:22:22.76
>>313
そうだったのですね
ありがとうございます
まだまだパワークエリのM言語は触り始めたばかりでルールを知りませんでした
0315名無しさん@そうだ選挙にいこう垢版2023/06/04(日) 13:13:19.77
パワークエリのグループ化の集計方法は何が違うのでしょうか?
0316名無しさん@そうだ選挙にいこう垢版2023/06/05(月) 12:30:31.25
B列からH列まであって
それぞれの列の値は被らないとします
この場合B列からH列までを一つの列にまとめる事は可能でしょうか?
0318名無しさん@そうだ選挙にいこう垢版2023/06/05(月) 19:09:10.88
データモデル(PowerPivot)はデータをブックに読み込んでしまう
ファイルサイズ見ればわかるよ
PowerPivotの編集画面で表示されるデータがそのままブックに保存されてる
PowerQueryだけならそうならない
0319名無しさん@そうだ選挙にいこう垢版2023/06/05(月) 21:44:11.31
>>318
データモデルに追加はよく省メモリとか軽量化のための手段として紹介されていますが
全くの出鱈目だったんですね
0320名無しさん@そうだ選挙にいこう垢版2023/06/06(火) 06:57:57.49
データモデルは、
ワークシート限界の104万行以上を扱える。
Power Pivotと併用すると、計算が速い。
その代わり、データが大きいほどメモリーは食う。
0321名無しさん@そうだ選挙にいこう垢版2023/06/06(火) 07:34:36.14
>>320
リレーションシップだから処理が軽く早いんだと聞いていましたが違ったのですね
0322320垢版2023/06/06(火) 10:15:46.29
たとえば、>>297
日本版電力エリア需給実績(1時間値)もどきをやると、
1時間平均値なので、1供給エリアごとに年間8,760行。

個別の供給10エリアはあって、
さらに、50Hz連系時間帯串刺し、60Hz連系串刺し、10エリア計時間帯串刺しで+3エリア
都合、13エリア分になる。
年間:8,760行×13エリア=113,880行/年。

ここまでの、Web公開csvファイルDLからクレンジング、加工、集計とかの下処理は、
Excelで個別にクエリーやVBAを使って月次処理。

公開開始の2016年度から2022年度までの7年間だと、797,160行。
3ヶ年だけ、蓄電池シミュレーション版も入れたら、104万行を超えてもうた。

で、まだ勉強しながら作ってる途中だけど、
Power BI Desktopから年度別Excelファイルを読みに行って、
統合してデータモデルに格納(そもそも、BIにはワークシートがない)、
これの月別1時間値推移の、積み上げ棒&折れ線の複合グラフを作ると・・・

・スライサー切替えによるグラフ再描写が1秒弱。(第8世代Core i7のKなし)
・月次集計、年次集計、エリア間比較、電源構成比も楽ですよ
・BIの.pbixファイルだけなら130MBくらい
・ただし、BIだけでメモリーは1.4GB食ってます、
 制作途中でBIの中でクエリー更新すると、CPU負荷率とメモリー消費量がもっと跳ね上がって、ちょっと時間が掛かります、
 出来てしまえば、スライサー切替えによる再計算は速いです・・・

って話。

https://i.imgur.com/C74ul4i.png
https://i.imgur.com/omO9dQm.png
https://i.imgur.com/1QPmbIO.png
0324名無しさん@そうだ選挙にいこう垢版2023/06/06(火) 17:13:19.88
外せるよ。

「クエリと接続」の右ペイン出して、
目的のクエリー右クリックして「読込み先」、
「このデータをデータモデルに追加する」のチェックを外す
だったか。
Power Pivot開いて目的のクエリーのタブ右クリックして削除でも行けたかな?
0326名無しさん@そうだ選挙にいこう垢版2023/06/06(火) 20:01:51.66
パワーピボットで3種類の値の入った列を複数列、行フィールドに入れてフィルターをかけたらどうなりますか?
ANDでフィルターをかけられた結果が表示されますか?
0328名無しさん@そうだ選挙にいこう垢版2023/06/07(水) 07:18:28.24
>>327
やはり一つの列には一つの値しか存在してはいけないのですね
私もア以外の値をなくすことによってピボットテーブルで集計する事ができました

https://i.imgur.com/bTwA4tg.jpg


https://i.imgur.com/z7yJTK3.jpg

この様に列を並べて一つのピボットテーブルで集計したいです
0329名無しさん@そうだ選挙にいこう垢版2023/06/07(水) 08:26:02.56
>>328
「一つの列に一つの値」は基本中の基本、イロハの「イ」やで。
それと、他人に説明するとき、示す文章と絵を一致させるのも、イロハの「イ」や。

よーく、覚えとけ。
0330名無しさん@そうだ選挙にいこう垢版2023/06/07(水) 08:45:36.27
>>329
一つの列に一つの値が基本中の基本なので一つの列しか並べられない
という事はわかりました

ではなぜこれがア イ ウの値のある列ではなく、アしかない複数の列を並べる場合だと上手く機能するのでしょうか?
0331名無しさん@そうだ選挙にいこう垢版2023/06/08(木) 21:58:54.72
ピボットテーブルにもデータモデルに追加すると動作が重くなる とか メモリ不足等のエラーメッセージが出る という事はありますか?
0335名無しさん@そうだ選挙にいこう垢版2023/06/09(金) 20:55:11.42
>>331
データの格納効率(圧縮率?)はワークシートよりデータモデルの方が良いらしい
でもその処理で余計にCPUやメモリは消費するかもしれないね
0336名無しさん@そうだ選挙にいこう垢版2023/06/11(日) 10:42:42.93
列にフィルターを掛けます
フィルターされた のステップが挿入されます
このステップのコードをコピーすれば何回でも流用できますか?
0337名無しさん@そうだ選挙にいこう垢版2023/06/14(水) 22:38:53.61
SQLの基本を解説する本を読んでいてパワークエリに通じるものを感じます
つまりそもそもSQLを覚えましょうという事なのでしょうか?
0340名無しさん@そうだ選挙にいこう垢版2023/06/15(木) 21:07:17.33
パワークエリはSQLでできる事をさもすごい新機能の様に言っているだけでしょうか?
0344名無しさん@そうだ選挙にいこう垢版2023/06/16(金) 12:14:32.96
Pythonを少し触りはじめた人がExcelでは上手く作れない複雑な計算(数学?)のグラフがPythonだったら簡単に作れると驚いていたのですが、それはデータベースとかライブラリだからだとしたらそういう事だったのかという感じ
0346名無しさん@そうだ選挙にいこう垢版2023/06/19(月) 22:48:24.89
パワークエリでPythonを動かす人もいるのでしょう?
0347名無しさん@そうだ選挙にいこう垢版2023/08/04(金) 09:28:17.84
リレーション先のテーブルにある別カラムを条件に、棒グラフの1本だけを色変えたりできないかな?
0348名無しさん@そうだ選挙にいこう垢版2023/08/04(金) 12:22:46.80
ん?
どういう集計のどういうグラフか、詳細が分らないが、

条件使ってPowerQueryか関数で別系列に出来るなら、
色付け自体は固定的にグラフの設定

棒グラフじゃないけど、例えば、
最大値を別の色のマーカーにしたいとき、
最大値の系列を別に作って、他データを#N/Aにして
その1点だけ、あたかも別系列で重ねて表示させる、
なんてことはよくやる。

系列名が動的に変わるならVBA

とか。
0349名無しさん@そうだ選挙にいこう垢版2023/08/23(水) 09:28:23.14
やっぱり、出たよ

Introducing Python in Excel: The Best of Both Worlds for Data Analysis and Visualization
https://techcommunity.microsoft.com/t5/microsoft-365-blog/introducing-python-in-excel-the-best-of-both-worlds-for-data/ba-p/3905482?ocid=usoc_TWITTER_M365_spl100004503643083

Microsoft、「Python in Excel」を発表 〜Windows向けベータ版でテスト開始
https://forest.watch.impress.co.jp/docs/news/1525532.html
0351名無しさん@そうだ選挙にいこう垢版2023/10/02(月) 03:26:16.21
pdf表のデータ・スクレイピングは難儀だけど、
例えば、毎月発表される東電パワーグリッドの再エネ接続量のこのファイル、
https://www.tepco.co.jp/pg/consignment/system/pdf/newenergy_hondo_backnumber.pdf

これから%の表は抜きで
電源種別、申込ステータス、年月ごとの容量(万kW)をリスト化にするには、
・ページ番号・行番号・列番号使って、
・いったん時系列・項目・データ部に分け、
・番号を頼りにマージで再合成
すれば、PowerQueryでも出来んのね。
0353名無しさん@そうだ選挙にいこう垢版2024/02/29(木) 16:59:07.69
Webデータを読み込むクエリーで
ステップを重ねていって、途中でエラーになったとき(例:該当するデータがない等)、
その後のステップを飛ばして(if then elseでやるか・・・)
データがないのテーブルを#tableで生成して終わるような処理は
出来るかな?
0355名無しさん@そうだ選挙にいこう垢版2024/03/08(金) 15:47:22.05
初歩的な質問かもしれんのですが、この動画https://youtu.be/tFrjr3IiIlM?si=nYS3GRwPgYwMprmO 見ながら勉強しててドリルダウンまで行ったんだけど何故か綺麗に左からGDP順でドリルダウにならず…国名の五十音順になってしまうのって何故だと思う?
0356名無しさん@そうだ選挙にいこう垢版2024/03/08(金) 16:05:36.54
>>355
軸の並び替えで対処できたわ
レスを投稿する


ニューススポーツなんでも実況