- ベストアンサー
PowerQueryが簡単?
- PowerQueryでワークブックの結合が簡単にできるという回答をよく見かけますが、私には難しすぎて挫折してしまいました。
- VBAのような簡単な操作なら私にもできますが、PowerQueryは理解できないほど難しいです。
- 他の人がPowerQueryを簡単にできると言っているのに具体的な操作方法を教えてくれず、自分で調べろと言われて困っています。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
何が難しいかは人それぞれですから。 なにかが難しいと感じるからと言って劣っているとかそんなことはないと思います。 VBAも他者にとっては難しい事だと思いますよ。 PowerQueryもVBAもその他の事に関しても、適材適所で自分が簡単にやれるものを選択したらいいのではないでしょうか。
その他の回答 (6)
- HohoPapa
- ベストアンサー率65% (455/693)
>SQL RDB 初耳です。 DB、とりわけRDBを扱う場合、SQLは必須であり、 PowerQueryやpivotテーブルの機能は 内部ではSQLを使っているものと思います。 SQLはマスターして損のない言語(Language)と思います。 ちょっと時間があったので、 https://www.noboyu.com/entry/2017/01/08/213436 と同じことを実現するコードをVBA+SQLで書いてみましたので よかったら学習教材に加えてみてください。 例えば https://okwave.jp/qa/q9664019.html この課題も (1行目がタイトル行であることが前提です。) 以下のコード、あるいはPowerQueryでも 対応できるものと思います。 Sub Sample() Const Path As String = "D:\Test\hoge\" Const GetShName = "Sheet1" '取得するシート名 Dim cn As Object Dim rs As Object Dim buf As String Dim cnt As Long Dim SQL As String Dim ColCouner As Long Dim MaxRow As Long Dim PutSheet As Worksheet Set PutSheet = ThisWorkbook.Sheets(1) '書き出すシート PutSheet.Cells.ClearContents SQL = "SELECT * " & "FROM [" & GetShName & "$A1:Z1000]" & vbCrLf buf = Dir(Path & "*.xlsx") cnt = 0 Do While buf <> "" cnt = cnt + 1 Set cn = CreateObject("ADODB.Connection") Set rs = CreateObject("ADODB.Recordset") cn.Provider = "Microsoft.ACE.OLEDB.12.0" cn.Properties("Extended Properties") = "Excel 12.0;HDR=Yes;IMEX=1" cn.Open Path & buf rs.Open SQL, cn If cnt = 1 Then For ColCouner = 0 To rs.Fields.Count - 1 PutSheet.Cells(1, ColCouner + 1).Value = rs.Fields(ColCouner).Name Next ColCouner End If MaxRow = PutSheet.Cells(Rows.Count, 1).End(xlUp).Row PutSheet.Cells(MaxRow + 1, 1).CopyFromRecordset rs rs.Close Set rs = Nothing cn.Close Set cn = Nothing buf = Dir() Loop End Sub
お礼
最近、お礼忘れという機能ができました。必ずお礼をする主義ですが忘れていました。遅ればせながら、お礼をさせていただきます。 Excel2013 を使っているので使えないのも原因です。 (ダウンロードすれば使えるが、難しそうな上、必要性を感じなかった) 内容を読んだ限り、数学に例えれば VBA 掛け算 PowerQuery 微積分 位の差があると思いました。
- HohoPapa
- ベストアンサー率65% (455/693)
PowerQueryが簡単と感じるかどうかは 個々人の慣れやスキル次第で異なるだろうと思います。 ただし、複数のブックのリストを統合する場合 (当然ではありますが) それぞれのブックが、 統合されることを想定したフォーマットやシート構成である必要があり 躓きやすいと思いますし、それなりの試行錯誤が必要です。 また、テーブル(リスト)を扱うこととなりますので 好き勝手にセルを配置したり、セルの結合をすることなどが制限されますので ストレスを感じ、挫折する場合もありましょう。 その意味で、 PowerQueryを簡単と呼ぶのには無理があると思います。 ・単に1つのブック内で完結する使い方の場合は ほぼ不要な機能と思います。 ・VBA、SQL、RDBの知識のある方なら、 PowerQueryに代わる機能がいろいろ考えられることから 使われるケースは稀だろうと思います。 私だったら、 テーブル(リスト)をSQL Serverに格納しSQLを使います。 あるいは、ブックをデータベースとして扱い、 やはりSQLを投げて必要な処理をします。 ・そのように考えると 使う人(使いたい人)、必要とする場面は限定的と思います。
お礼
SQL RDB 初耳です。そういうのもExcel にあるのですか。私の知らないもばかりです。 VBA ができると、全でそれでやってしまい、他の物には見向きもしなくなります。 PowerQueryにそのような制限があるのなら、身に着けるのは無駄な気がしました。 PowerQueryも「簡単にできる」と書く人がそんなにいなければ、自分には必要ないと判断して、無視したと思います。最初、PowerQueryを見た時にそう思いました。 >PowerQueryを簡単と呼ぶのには無理がある こう書いてくれた人は初めてです。別に、できなくてもいいのですね。 機能を見ていると、全てVBA でできることだし、自由度も高いです。 VBA を知らない人の方が、素直に受け入れられるのかもしれません。
- kkkkkm
- ベストアンサー率66% (1719/2589)
「VBA 程度なら簡単」という表現は、「自分は簡単な事しかわからない」という感じで使っているのだと思いますが、「VBAは分からない」という人にたいして「そんなこともわからないの」と言ってるような感じがします。「程度」というあたりがひっかかります。
お礼
VBA ができる人は、できない人を馬鹿にしたりしません。 自分に簡単な事でも、人にはできないことがあるのを認識しているからです。 PowerQueryができる人にそのような配慮はありません。「簡単だ」といってできない人を馬鹿にするだけで、決して人にはやり方を教えません。何様のつもりですか?PowerQueryができるのがそんなに偉いのですか? どうせ私はPowerQueryが解らない無能です。
- kkkkkm
- ベストアンサー率66% (1719/2589)
> 読んでみたけれど、難し過ぎて 確かに読んでみるとなんかよくわからんなぁ(特に旧バージョン)という感じですが、実際にやってみると、さほどでもないと思います。 > VBA で簡単にできる事をわざわざPowerQueryでやる 結合に関して(他の機能は分からないので)はVBAコード書くよりPowerQueryの方が簡単だと思いますが…。コード書くのに5回くらいクリック(最新版)では終わらないですよね。利用者がVBAわからないと作り直しもできませんし。 > PowerQueryで簡単にできるという回答者がいます。しかし、具体的にどのような操作をするのかは書く人はいません メニューをクリックして進んでいくやつは説明するとグダグダになったりするので具体的に回答しない可能性もあります。ピボットテーブルの説明を具体的にしている回答を見たことがありますが、正直難解でした。今回のように一般的な説明のあるURLを参考先として記載しているのならいいと思いますけど。ただ、リンクないとつらいかもですけど。 > 具体的な操作方法を書いて、初めて回答になるのではないですか。 質問した人によるでしょう。ちょっとしたヒントだけでわかる人もいらっしゃいますし、質問自体が抽象的だと具体的に回答のしようがないのではありませんか。
お礼
>結合に関してはVBA コード書くよりPowerQueryの方が簡単 それは、あなたがPowerQueryが理解できる程の優れた頭脳の持ち主だからです。全ての人があなた程頭がいいわけではありません。わからないとできないのは、VBA もPowerQueryも同じです。私程度の頭では、あんな難しいものを理解するのは不可能です。 URL は難しいものを簡単だという例として挙げました。他も読みましたが、難しくて理解不能です。なのに簡単たと書いてあります。
補足
「VBA でできます。やり方は自分で調べて下さい」と書かれていたり、参考URL が載せられていても、普通の人にはとてもできません。 PowerQueryもそうではないですか。少なくとも、私は、PowerQueryはどのサイトを見ても、難しくてさっぱりわかりませんでした。具体的な操作方法を書いていただかないと解りません。 VBA 程度なら簡単にできます。
- msMike
- ベストアンサー率20% (364/1804)
》 …、私の頭が悪すぎるのでしょうが。 「読んでみたけれど、難し過ぎ」は私もご同様だけど、そう考えるのは余りに短絡的かと。また、マクロ音痴な人を無能呼ばれわりされるのは如何なものかと。 》 調べてできないから質問しているのです。 調べもしないで投稿したり、回答者が「具体的な操作方法を書」けないような漠然とした質問だったり、丸投げ質問する輩が結構多いのも事実です。
お礼
私が無能呼ばわりしているのは、VBA ができない人ではなく、私を含めた「簡単」なPowerQueryができない人です。これは、PowerQueryが簡単だという人に対する皮肉です。ただ、VBA ができない人が腹を立てる事は想像したし、態とそのような書き方をしました。PowerQueryが簡単だという連中に腹が立ったし、無責任だと思うからです。 また、VBA ができない事や、丸投げ質問が悪いとも思っていません。そう思っているなら、VBA の質問には回答しません。
補足
VBA ができる人は、自分が簡単にできるから、人にも簡単にできるという態度をとったり、できない人を馬鹿にしたりはしません。 しかし、PowerQueryができる人は平気でやります。その苦しみをわかってもらうため、今回はあえてこのような態度を取りました。
- okwavey3
- ベストアンサー率19% (147/761)
VBAをバカにしちゃいけません。 これはこれで奥が深いと思いますし、無能な人には使いこなせません。 >こんな難しいものを、自分で調べてやれというのでしょうか。 わからなければ、調べると良いですね。 >調べてできないから質問しているのです。 では、調べ方が悪いかそれ以前の知識が足りないのでしょう。 >具体的な操作方法を書いて、初めて回答になるのではないですか。 金払って回答してもらうならそうですね。 別に回答者は義務じゃないから、質問者は回答を見て精査して、必要があれば調べたり、さらに踏み込んだ質問をすれば良いですね。 完璧でない回答は模範解答ではないと思いますが、模範解答しかしてはいけないなら誰も回答しないだけです。 そういう意識だと、好意的に教えてくれる人は少なくなりますし、出来る人にカモられるだけになりますよ。 出来る人が教えてくれるのは、それ自体にメリットがあるからです。
お礼
質問の仕方が悪かったのか、論点が食い違っています。 VBA を馬鹿にしてはいません。ほめているつもりです。PowerQueryのような訳の分からないものに比べ、簡単で使いやすく、何でもできます。 VBA で回答する人は、必ずプログラムを載せます。私もそうしています。 「VBA で簡単にできます。」とだけ回答する人はいません。 しかし、PowerQueryで回答する人はほとんどこれです。 VBA で回答する人と全然違います。 VBA すらできない人に、PowerQueryが解るとは思えません。
補足
私は、ほとんどの人が簡単だという、PowerQueryがさっぱりわからないほど無能です。 しかし、VBA は使いこなしています。
お礼
最近、お礼忘れという機能ができました。必ずお礼をする主義ですが忘れていました。遅ればせながら、お礼をさせていただきます。 「VBA 程度なら簡単」 はっきり言って、 「POWER QUERY は簡単」といっている連中に対する皮肉です。 私は、VBA は簡単と思っていますが、普通は言いません。できない人が不快に思うでしょう。 POWER QUERY だって同じです。簡単といわれればできない人が不快に思います。POWER QUERY ができる人はどうしてこのような配慮ができないのでしょうか。