Excel VBA 質問スレ Part84 (115レス)
1-

26: 10/05(日)09:18 ID:knUkubLb(5/14) AAS
パワークエリーは
let
変数名 = 関数
in
ただこれだけです
各ステップ名にそれぞれの関数の戻り値(型)が代入されるだけです
一体どれだけ簡単なのかと
名前付きfunction関数なら
(変数名 型) =>
let
変数名 = 関数
in
ただこれだけ
27: 10/05(日)09:28 ID:knUkubLb(6/14) AAS
会社で本格的なデータベースを構築しているとか、サーバーが使える、あるいは業務にしているのならそりゃSQLを推奨しますよ
しかし日本企業がそんなにITの導入をしているとは私はまったく思えません
だから当然必然的にExcelの標準機能一択になるわけです
世の中の企業にはVBAを禁止している会社もあると聞きます
だったら尚更パワークエリー
あとSQLはETLではないからSQLにできないことも多い
28
(1): 10/05(日)09:41 ID:beeJ4mT2(3/6) AAS
UnPivot て、Excelの原始的な機能で、貼り付け時に行/列入れ替え 貼り付けだけで済むんじゃないのか?
そんな単純じゃない!もっともっと厳しいデータなんだ!ってことなのか?
取り込んだデータが行列逆だったら、真っ先にそれするもんじゃないのか? 基本のキ?
29
(2): 10/05(日)09:51 ID:knUkubLb(7/14) AAS
>>28
UnPivotと行列入れ替えは全くの別物ですよ
行列入れ替えは本当にただ
 列


 行

にするだけなんだけど、UnPivotは横持ちデータを縦持ちデータに変換する事を言います
例えば
 1月2月3月4月5月〜
各エリア

という表があればその各月のデータを
エリア列|月列
とリスト表形式に整えてくれます
これ無くして高度な集計はできません
30
(1): 10/05(日)09:51 ID:beeJ4mT2(4/6) AAS
社内にサーバー(NAS含む)も仕立てていない企業が蓄えてる大容量のデータって
いや、Power Query を否定するつもりは無いけど、今のExcelの標準の機能で殆ど賄えやしないか?
ものっそ古いデータもあって、当時はデータの統一性もまばらで、セル内改行してるだの
文字の位置合わせにスペース使ってるだの、予想外のデータだったりすることもあるんだから
イロハのイ、基本のキは守っておいて損は無いんだけど
31
(1): 10/05(日)09:58 ID:QIz/HuGJ(1) AAS
自分はSQL派なので事前に定義されたテーブルにデータを入れておくという考え方の方になじみがあるけど、表っぽいデータなら大抵はうまい塩梅に整形できますぜということならパワークエリにもそれなりに活用場面は出てくると思う。ただ、クエリ部分をSQLからパワークエリに置き換えるのはちょっと躊躇を覚えるかな。標準規格があって、ペンダーが複数いるという安心感はかなり大きいので。
SQLを除いてExcelおよびその関連機能であるVBA、パワークエリだけで考えたときに、それぞれどういう長所・短所があるかというのはそれはそれで1つの議論ではあるね。
32: 10/05(日)10:08 ID:knUkubLb(8/14) AAS
なんでVBAで流石にUnPivot旬は難しいと言えるかと言うと、UnPivotする為にはそれぞれの項目とその数に応じて大量に行の挿入を行う必要があるからです

これをVBAでやろうとすると行ズレ問題に頭を悩ませるし、セル操作、Rangeは非常に遅いし、2次配列の操作はVBAは非常に貧弱だからです

一応、パワークエリーが登場する前(本当はMicrosoft Queryという前身機能があったらしいですが)のVBAのまず最初にやる事はUnPivotだったらしいので、絶対にできないとは言いません
しかし、パワークエリーならボタンぽちぽちで済む事を全部コードに書かなきゃならないので非常に面倒くさい上に不具合もあります

サーバーがある、本物のSQLが使用できる環境があると言うのなら当然止めません
既に正規化されているデータだけを扱うと言うのであれば尚更でしょう
しかし世の中その様なデータばかりを扱うとは到底思えません
33: 10/05(日)10:09 ID:knUkubLb(9/14) AAS
>>31
表っぽいデータなら「大抵」ではなく、「全て」うまい塩梅に整形できますぜ です
なぜならそれがETLだからです
34
(1): 10/05(日)10:30 ID:beeJ4mT2(5/6) AAS
その「ボタンぽちぽち」で出来てしまう点を懸念してンだけどねw
野良データがガサツでも、ぽちぽちしたらちゃんとした表に仕上がりました! で、そのデータの
信ぴょう性とかファクトが担保されるのか?という面で、イとかキは疎かにしちゃいけない、と
で、そのイとかキをしてる最中に「これとこれをこうすりゃこう仕上がる」という、データ加工の
手順や経緯や法則がきちんと把握できてく(それが判ればほぼほぼ基本機能で済むケースが多いのも現実)

そういう基盤がキチンと制作者も受け取る側も共有出来てるなら、どんなアプリ使おうとも構わんけど
作る側がその辺ないがしろにして「この機能サイコー!」だけで盲信して得意満面に仕上げてきた表ほど
役に立たないものも無いってのも現実 まあ、老婆心だけだけどw
35: 10/05(日)10:50 ID:YF7wvbQm(1/4) AAS
たぶん想定されている使われ方が結構違うんだろうね。

DBの場合、事前に設計されたテーブルを前提としているから、テーブル設計で失敗していない限りそもそもpivotとかunpivotとかが必要になる機会自体そんなにないと思うのよ。古いシステムからデータを取り込んだりするときくらいじゃない? だからpivot / unpivot の利便性をメリットとして挙げられてもあんまりピンと来ない感がある。
パワークエリの方は、どちらかというと表っぽいデータ(いわゆる野良データも含む)をアドホックに処理できることに重点を置いているんでしょう。そういう場面ならpivot / unpivot が簡単にできると便利というのは分かる。

>>34
イとかキって何だと思ったが、イロハのイとキホンのキか。34を読んだだけでこれに気付いたのって凄くない?w
36: 10/05(日)10:51 ID:R8xFs1sO(1) AAS
そんなのVBAだろうとPQだろうと同じ
当たり前
当たり前のこと毎週書いてろw
37: 10/05(日)11:44 ID:knUkubLb(10/14) AAS
元データがちゃんと正規化されているリスト表だけだったらSQLでも十分
それはその通りです

でも世の中残念ながらそうじゃないんです
これはなぜETLというツールがいくつもあるのかという話です
大量の列があるデータをソフトウエアがCSVで出力されるケースを私は実際に知っているのです
そしてその時に私はUnPivotを知りました
38: 10/05(日)11:49 ID:knUkubLb(11/14) AAS
これだけは言えると思うのは
確かにSQLは1列に一つの種類の値、型のデータを扱うのなら最適化されているので高速ですが、そうでない場合、データのクリーニング、前処理が必要は場合は必ずしもそうではないと思います

あとデータソースは各種サーバーに出来るので、まずはお試しでやってみる、という叩き台やテストを「お手軽に」する事もできます
39: 10/05(日)12:15 ID:YF7wvbQm(2/4) AAS
そりゃデータの整形や前処理はSQLじゃなくて、ホスト言語の方の守備範囲だからね。
だから整形・前処理の部分で比較するなら、「コードを書く必要があるけど汎用性の高いホスト言語(JavaScriptとかPythonとか)」と、「ノーコードで済んで利便性が高いけどMSにロックインされるパワークエリ」という比較になるんじゃない?
表っぽいデータをアドホックに次々と分析していくような用途ならパワークエリの方が便利だろうし、永続的なデータを扱うならSQLの方が安心感がある。

フォーマットが完全に固まっているならVBAも選択肢に入ってくるだろうし。
40
(1): 10/05(日)12:58 ID:Gl792nZh(2/3) AAS
>>29
UNPIVOTはCHOOSECOLSとVSTACKで余裕
41
(1): 10/05(日)13:40 ID:Gl792nZh(3/3) AAS
>>29
=LET(
UNPIVOT,LAMBDA(table,values,
DROP(REDUCE(0,SEQUENCE(COLUMNS(values)),LAMBDA(a,v,
LET(
value,INDEX(values,v),
VSTACK(a,HSTACK(EXPAND(value,ROWS(table),,value),CHOOSECOLS(table,v)))
)
)),1)
),
UNPIVOT(C1:G10,{"月","火","水","木","金"})
)
42
(1): 10/05(日)14:06 ID:beeJ4mT2(6/6) AAS
サーバーも持ち合わせずVBAも禁止されてる企業って書いてみたり
とあるアプリが大量の列があるCSVを吐き出したケースがあって、それでUnpivotを知ったとか書いてるし
やっぱ新しいおもちゃに大興奮してるとしか読めない
野良と言えどもサイバー空間上にあるデータは、まがりなりにもDBのお作法に沿った整形されてるんじゃないのか?
WEBページやクラウドデータとかに接続するなら尚更
手強い野良っつーのは社内に保管されてる過去20年のデータみたいな意味で、>>30 に書いた例なんかかわいい方
とも思えるファイルがゴロゴロしてることもある それを上から十行ぐらいナナメ読みして憶測で判断してたら
しっぺ返し喰らう
その大量に吐き出されたCSVだって、実はD列のデータだけじゃ無くてAA列だのBB列だののデータと組でようやく意味を為す
なんてぇケースだってごまんと見て来た キとかイとかw データを扱うお作法は蔑ろにしてはいけない
データクレンジングとか昨今は呼ぶのか? それは機能に任せる前に、人間の目で手でまずは洗浄しておくべき
キカイは命令された事しかやらない・できない その命令する側が手抜きしてたら手抜きされたデータの塊になるだけ
43: 10/05(日)14:30 ID:YF7wvbQm(3/4) AAS
>>40-41
そういうのは余裕とは言わないw 凄いとは思うけど、人が読んだり書いたりするコードじゃないでしょ。AIに生成させるとかならありかもしれないが。

2020年代になってから関数が大量に追加されているのって、AI使用が視野に入っているからなのかなとちょっと思った。
44: 10/05(日)19:35 ID:knUkubLb(12/14) AAS
>>42
複合キーを利用する、複数列の値を使用する、結合するという事はできますよ
45
(1): 10/05(日)20:29 ID:knUkubLb(13/14) AAS
そもそもExcelになぜPythonが導入されたかと言うと、パワークエリーで前処理、集計したデータを非公式に導入したPythonでさらに高度な集計を行う、と言う事が行われていたからです。
そう言う事が行われているくらい非常に協力な機能なのです。
JavaScriptのコードも動かせます。
1-
あと 70 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.004s