Excel VBA 質問スレ Part84 (115レス)
Excel VBA 質問スレ Part84 http://mevius.5ch.net/test/read.cgi/tech/1759297002/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
26: デフォルトの名無しさん [] 2025/10/05(日) 09:18:37.32 ID:knUkubLb パワークエリーは let 変数名 = 関数 in ただこれだけです 各ステップ名にそれぞれの関数の戻り値(型)が代入されるだけです 一体どれだけ簡単なのかと 名前付きfunction関数なら (変数名 型) => let 変数名 = 関数 in ただこれだけ http://mevius.5ch.net/test/read.cgi/tech/1759297002/26
27: デフォルトの名無しさん [] 2025/10/05(日) 09:28:11.50 ID:knUkubLb 会社で本格的なデータベースを構築しているとか、サーバーが使える、あるいは業務にしているのならそりゃSQLを推奨しますよ しかし日本企業がそんなにITの導入をしているとは私はまったく思えません だから当然必然的にExcelの標準機能一択になるわけです 世の中の企業にはVBAを禁止している会社もあると聞きます だったら尚更パワークエリー あとSQLはETLではないからSQLにできないことも多い http://mevius.5ch.net/test/read.cgi/tech/1759297002/27
28: デフォルトの名無しさん [sage] 2025/10/05(日) 09:41:07.01 ID:beeJ4mT2 UnPivot て、Excelの原始的な機能で、貼り付け時に行/列入れ替え 貼り付けだけで済むんじゃないのか? そんな単純じゃない!もっともっと厳しいデータなんだ!ってことなのか? 取り込んだデータが行列逆だったら、真っ先にそれするもんじゃないのか? 基本のキ? http://mevius.5ch.net/test/read.cgi/tech/1759297002/28
29: デフォルトの名無しさん [] 2025/10/05(日) 09:51:23.22 ID:knUkubLb >>28 UnPivotと行列入れ替えは全くの別物ですよ 行列入れ替えは本当にただ 列 行 を 行 列 にするだけなんだけど、UnPivotは横持ちデータを縦持ちデータに変換する事を言います 例えば 1月2月3月4月5月〜 各エリア 〜 という表があればその各月のデータを エリア列|月列 とリスト表形式に整えてくれます これ無くして高度な集計はできません http://mevius.5ch.net/test/read.cgi/tech/1759297002/29
30: デフォルトの名無しさん [sage] 2025/10/05(日) 09:51:47.38 ID:beeJ4mT2 社内にサーバー(NAS含む)も仕立てていない企業が蓄えてる大容量のデータって いや、Power Query を否定するつもりは無いけど、今のExcelの標準の機能で殆ど賄えやしないか? ものっそ古いデータもあって、当時はデータの統一性もまばらで、セル内改行してるだの 文字の位置合わせにスペース使ってるだの、予想外のデータだったりすることもあるんだから イロハのイ、基本のキは守っておいて損は無いんだけど http://mevius.5ch.net/test/read.cgi/tech/1759297002/30
31: デフォルトの名無しさん [sage] 2025/10/05(日) 09:58:16.44 ID:QIz/HuGJ 自分はSQL派なので事前に定義されたテーブルにデータを入れておくという考え方の方になじみがあるけど、表っぽいデータなら大抵はうまい塩梅に整形できますぜということならパワークエリにもそれなりに活用場面は出てくると思う。ただ、クエリ部分をSQLからパワークエリに置き換えるのはちょっと躊躇を覚えるかな。標準規格があって、ペンダーが複数いるという安心感はかなり大きいので。 SQLを除いてExcelおよびその関連機能であるVBA、パワークエリだけで考えたときに、それぞれどういう長所・短所があるかというのはそれはそれで1つの議論ではあるね。 http://mevius.5ch.net/test/read.cgi/tech/1759297002/31
32: デフォルトの名無しさん [] 2025/10/05(日) 10:08:01.77 ID:knUkubLb なんでVBAで流石にUnPivot旬は難しいと言えるかと言うと、UnPivotする為にはそれぞれの項目とその数に応じて大量に行の挿入を行う必要があるからです これをVBAでやろうとすると行ズレ問題に頭を悩ませるし、セル操作、Rangeは非常に遅いし、2次配列の操作はVBAは非常に貧弱だからです 一応、パワークエリーが登場する前(本当はMicrosoft Queryという前身機能があったらしいですが)のVBAのまず最初にやる事はUnPivotだったらしいので、絶対にできないとは言いません しかし、パワークエリーならボタンぽちぽちで済む事を全部コードに書かなきゃならないので非常に面倒くさい上に不具合もあります サーバーがある、本物のSQLが使用できる環境があると言うのなら当然止めません 既に正規化されているデータだけを扱うと言うのであれば尚更でしょう しかし世の中その様なデータばかりを扱うとは到底思えません http://mevius.5ch.net/test/read.cgi/tech/1759297002/32
33: デフォルトの名無しさん [] 2025/10/05(日) 10:09:32.03 ID:knUkubLb >>31 表っぽいデータなら「大抵」ではなく、「全て」うまい塩梅に整形できますぜ です なぜならそれがETLだからです http://mevius.5ch.net/test/read.cgi/tech/1759297002/33
34: デフォルトの名無しさん [sage] 2025/10/05(日) 10:30:14.94 ID:beeJ4mT2 その「ボタンぽちぽち」で出来てしまう点を懸念してンだけどねw 野良データがガサツでも、ぽちぽちしたらちゃんとした表に仕上がりました! で、そのデータの 信ぴょう性とかファクトが担保されるのか?という面で、イとかキは疎かにしちゃいけない、と で、そのイとかキをしてる最中に「これとこれをこうすりゃこう仕上がる」という、データ加工の 手順や経緯や法則がきちんと把握できてく(それが判ればほぼほぼ基本機能で済むケースが多いのも現実) そういう基盤がキチンと制作者も受け取る側も共有出来てるなら、どんなアプリ使おうとも構わんけど 作る側がその辺ないがしろにして「この機能サイコー!」だけで盲信して得意満面に仕上げてきた表ほど 役に立たないものも無いってのも現実 まあ、老婆心だけだけどw http://mevius.5ch.net/test/read.cgi/tech/1759297002/34
35: デフォルトの名無しさん [sage] 2025/10/05(日) 10:50:37.84 ID:YF7wvbQm たぶん想定されている使われ方が結構違うんだろうね。 DBの場合、事前に設計されたテーブルを前提としているから、テーブル設計で失敗していない限りそもそもpivotとかunpivotとかが必要になる機会自体そんなにないと思うのよ。古いシステムからデータを取り込んだりするときくらいじゃない? だからpivot / unpivot の利便性をメリットとして挙げられてもあんまりピンと来ない感がある。 パワークエリの方は、どちらかというと表っぽいデータ(いわゆる野良データも含む)をアドホックに処理できることに重点を置いているんでしょう。そういう場面ならpivot / unpivot が簡単にできると便利というのは分かる。 >>34 イとかキって何だと思ったが、イロハのイとキホンのキか。34を読んだだけでこれに気付いたのって凄くない?w http://mevius.5ch.net/test/read.cgi/tech/1759297002/35
36: デフォルトの名無しさん [] 2025/10/05(日) 10:51:30.92 ID:R8xFs1sO そんなのVBAだろうとPQだろうと同じ 当たり前 当たり前のこと毎週書いてろw http://mevius.5ch.net/test/read.cgi/tech/1759297002/36
37: デフォルトの名無しさん [] 2025/10/05(日) 11:44:07.60 ID:knUkubLb 元データがちゃんと正規化されているリスト表だけだったらSQLでも十分 それはその通りです でも世の中残念ながらそうじゃないんです これはなぜETLというツールがいくつもあるのかという話です 大量の列があるデータをソフトウエアがCSVで出力されるケースを私は実際に知っているのです そしてその時に私はUnPivotを知りました http://mevius.5ch.net/test/read.cgi/tech/1759297002/37
38: デフォルトの名無しさん [] 2025/10/05(日) 11:49:26.34 ID:knUkubLb これだけは言えると思うのは 確かにSQLは1列に一つの種類の値、型のデータを扱うのなら最適化されているので高速ですが、そうでない場合、データのクリーニング、前処理が必要は場合は必ずしもそうではないと思います あとデータソースは各種サーバーに出来るので、まずはお試しでやってみる、という叩き台やテストを「お手軽に」する事もできます http://mevius.5ch.net/test/read.cgi/tech/1759297002/38
39: デフォルトの名無しさん [sage] 2025/10/05(日) 12:15:13.64 ID:YF7wvbQm そりゃデータの整形や前処理はSQLじゃなくて、ホスト言語の方の守備範囲だからね。 だから整形・前処理の部分で比較するなら、「コードを書く必要があるけど汎用性の高いホスト言語(JavaScriptとかPythonとか)」と、「ノーコードで済んで利便性が高いけどMSにロックインされるパワークエリ」という比較になるんじゃない? 表っぽいデータをアドホックに次々と分析していくような用途ならパワークエリの方が便利だろうし、永続的なデータを扱うならSQLの方が安心感がある。 フォーマットが完全に固まっているならVBAも選択肢に入ってくるだろうし。 http://mevius.5ch.net/test/read.cgi/tech/1759297002/39
40: デフォルトの名無しさん [] 2025/10/05(日) 12:58:00.67 ID:Gl792nZh >>29 UNPIVOTはCHOOSECOLSとVSTACKで余裕 http://mevius.5ch.net/test/read.cgi/tech/1759297002/40
41: デフォルトの名無しさん [] 2025/10/05(日) 13:40:37.24 ID:Gl792nZh >>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,{"月","火","水","木","金"}) ) http://mevius.5ch.net/test/read.cgi/tech/1759297002/41
42: デフォルトの名無しさん [sage] 2025/10/05(日) 14:06:08.15 ID:beeJ4mT2 サーバーも持ち合わせずVBAも禁止されてる企業って書いてみたり とあるアプリが大量の列があるCSVを吐き出したケースがあって、それでUnpivotを知ったとか書いてるし やっぱ新しいおもちゃに大興奮してるとしか読めない 野良と言えどもサイバー空間上にあるデータは、まがりなりにもDBのお作法に沿った整形されてるんじゃないのか? WEBページやクラウドデータとかに接続するなら尚更 手強い野良っつーのは社内に保管されてる過去20年のデータみたいな意味で、>>30 に書いた例なんかかわいい方 とも思えるファイルがゴロゴロしてることもある それを上から十行ぐらいナナメ読みして憶測で判断してたら しっぺ返し喰らう その大量に吐き出されたCSVだって、実はD列のデータだけじゃ無くてAA列だのBB列だののデータと組でようやく意味を為す なんてぇケースだってごまんと見て来た キとかイとかw データを扱うお作法は蔑ろにしてはいけない データクレンジングとか昨今は呼ぶのか? それは機能に任せる前に、人間の目で手でまずは洗浄しておくべき キカイは命令された事しかやらない・できない その命令する側が手抜きしてたら手抜きされたデータの塊になるだけ http://mevius.5ch.net/test/read.cgi/tech/1759297002/42
43: デフォルトの名無しさん [sage] 2025/10/05(日) 14:30:19.32 ID:YF7wvbQm >>40-41 そういうのは余裕とは言わないw 凄いとは思うけど、人が読んだり書いたりするコードじゃないでしょ。AIに生成させるとかならありかもしれないが。 2020年代になってから関数が大量に追加されているのって、AI使用が視野に入っているからなのかなとちょっと思った。 http://mevius.5ch.net/test/read.cgi/tech/1759297002/43
44: デフォルトの名無しさん [] 2025/10/05(日) 19:35:04.95 ID:knUkubLb >>42 複合キーを利用する、複数列の値を使用する、結合するという事はできますよ http://mevius.5ch.net/test/read.cgi/tech/1759297002/44
45: デフォルトの名無しさん [] 2025/10/05(日) 20:29:32.36 ID:knUkubLb そもそもExcelになぜPythonが導入されたかと言うと、パワークエリーで前処理、集計したデータを非公式に導入したPythonでさらに高度な集計を行う、と言う事が行われていたからです。 そう言う事が行われているくらい非常に協力な機能なのです。 JavaScriptのコードも動かせます。 http://mevius.5ch.net/test/read.cgi/tech/1759297002/45
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 70 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.016s