Excel VBA 質問スレ Part84 (114レス)
上下前次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-新書関写板覧索設栞歴
あと 69 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.013s