こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

PowerQueryが簡単?

よく、ワークブックの結合がPowerQueryで簡単にできるという書き込みを見ます。
読んでみたけれど、難し過ぎて私にはさっぱり解らず、挫折しました。私の頭が悪すぎるのでしょうが。
VBA の様な簡単なものなら、私の程度の無能でもできます。
こんな難しいものが理解できるなら、VBA 程度の簡単なものはすぐ解ると思うのですが。
VBA で簡単にできる事をわざわざPowerQueryでやるのも理解できません。

もう一つ、よくExcel の質問に、PowerQueryで簡単にできるという回答者がいます。しかし、具体的にどのような操作をするのかは書く人はいません。これは無責任な回答だと思います。こんな難しいものを、自分で調べてやれというのでしょうか。調べてできないから質問しているのです。具体的な操作方法を書いて、初めて回答になるのではないですか。

https://www.noboyu.com/entry/2017/01/08/213436

投稿日時 - 2019-11-08 10:08:20

QNo.9676442

暇なときに回答ください

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(7)

ANo.8

>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

投稿日時 - 2019-11-11 23:02:46

ANo.7

何が難しいかは人それぞれですから。

なにかが難しいと感じるからと言って劣っているとかそんなことはないと思います。
VBAも他者にとっては難しい事だと思いますよ。

PowerQueryもVBAもその他の事に関しても、適材適所で自分が簡単にやれるものを選択したらいいのではないでしょうか。

投稿日時 - 2019-11-10 19:16:10

ANo.6

PowerQueryが簡単と感じるかどうかは
個々人の慣れやスキル次第で異なるだろうと思います。

ただし、複数のブックのリストを統合する場合
(当然ではありますが)
それぞれのブックが、
統合されることを想定したフォーマットやシート構成である必要があり
躓きやすいと思いますし、それなりの試行錯誤が必要です。

また、テーブル(リスト)を扱うこととなりますので
好き勝手にセルを配置したり、セルの結合をすることなどが制限されますので
ストレスを感じ、挫折する場合もありましょう。

その意味で、
PowerQueryを簡単と呼ぶのには無理があると思います。

・単に1つのブック内で完結する使い方の場合は
  ほぼ不要な機能と思います。
・VBA、SQL、RDBの知識のある方なら、
  PowerQueryに代わる機能がいろいろ考えられることから
  使われるケースは稀だろうと思います。
  私だったら、
  テーブル(リスト)をSQL Serverに格納しSQLを使います。
  あるいは、ブックをデータベースとして扱い、
  やはりSQLを投げて必要な処理をします。
・そのように考えると
  使う人(使いたい人)、必要とする場面は限定的と思います。

投稿日時 - 2019-11-09 18:39:41

お礼

SQL RDB 初耳です。そういうのもExcel にあるのですか。私の知らないもばかりです。

VBA ができると、全でそれでやってしまい、他の物には見向きもしなくなります。
PowerQueryにそのような制限があるのなら、身に着けるのは無駄な気がしました。

PowerQueryも「簡単にできる」と書く人がそんなにいなければ、自分には必要ないと判断して、無視したと思います。最初、PowerQueryを見た時にそう思いました。

>PowerQueryを簡単と呼ぶのには無理がある
こう書いてくれた人は初めてです。別に、できなくてもいいのですね。
機能を見ていると、全てVBA でできることだし、自由度も高いです。
VBA を知らない人の方が、素直に受け入れられるのかもしれません。

投稿日時 - 2019-11-10 09:21:26

ANo.4

「VBA 程度なら簡単」という表現は、「自分は簡単な事しかわからない」という感じで使っているのだと思いますが、「VBAは分からない」という人にたいして「そんなこともわからないの」と言ってるような感じがします。「程度」というあたりがひっかかります。

投稿日時 - 2019-11-09 08:55:15

お礼

VBA ができる人は、できない人を馬鹿にしたりしません。
自分に簡単な事でも、人にはできないことがあるのを認識しているからです。
PowerQueryができる人にそのような配慮はありません。「簡単だ」といってできない人を馬鹿にするだけで、決して人にはやり方を教えません。何様のつもりですか?PowerQueryができるのがそんなに偉いのですか? どうせ私はPowerQueryが解らない無能です。

投稿日時 - 2019-11-09 16:21:15

ANo.3

> 読んでみたけれど、難し過ぎて

確かに読んでみるとなんかよくわからんなぁ(特に旧バージョン)という感じですが、実際にやってみると、さほどでもないと思います。

> VBA で簡単にできる事をわざわざPowerQueryでやる

結合に関して(他の機能は分からないので)はVBAコード書くよりPowerQueryの方が簡単だと思いますが…。コード書くのに5回くらいクリック(最新版)では終わらないですよね。利用者がVBAわからないと作り直しもできませんし。

> PowerQueryで簡単にできるという回答者がいます。しかし、具体的にどのような操作をするのかは書く人はいません

メニューをクリックして進んでいくやつは説明するとグダグダになったりするので具体的に回答しない可能性もあります。ピボットテーブルの説明を具体的にしている回答を見たことがありますが、正直難解でした。今回のように一般的な説明のあるURLを参考先として記載しているのならいいと思いますけど。ただ、リンクないとつらいかもですけど。

> 具体的な操作方法を書いて、初めて回答になるのではないですか。

質問した人によるでしょう。ちょっとしたヒントだけでわかる人もいらっしゃいますし、質問自体が抽象的だと具体的に回答のしようがないのではありませんか。

投稿日時 - 2019-11-08 15:28:59

補足

「VBA でできます。やり方は自分で調べて下さい」と書かれていたり、参考URL が載せられていても、普通の人にはとてもできません。
PowerQueryもそうではないですか。少なくとも、私は、PowerQueryはどのサイトを見ても、難しくてさっぱりわかりませんでした。具体的な操作方法を書いていただかないと解りません。
VBA 程度なら簡単にできます。

投稿日時 - 2019-11-09 03:59:39

お礼

>結合に関してはVBA コード書くよりPowerQueryの方が簡単
 それは、あなたがPowerQueryが理解できる程の優れた頭脳の持ち主だからです。全ての人があなた程頭がいいわけではありません。わからないとできないのは、VBA もPowerQueryも同じです。私程度の頭では、あんな難しいものを理解するのは不可能です。
 URL は難しいものを簡単だという例として挙げました。他も読みましたが、難しくて理解不能です。なのに簡単たと書いてあります。

投稿日時 - 2019-11-09 02:14:05

ANo.2

》 …、私の頭が悪すぎるのでしょうが。
「読んでみたけれど、難し過ぎ」は私もご同様だけど、そう考えるのは余りに短絡的かと。また、マクロ音痴な人を無能呼ばれわりされるのは如何なものかと。

》 調べてできないから質問しているのです。
調べもしないで投稿したり、回答者が「具体的な操作方法を書」けないような漠然とした質問だったり、丸投げ質問する輩が結構多いのも事実です。

投稿日時 - 2019-11-08 14:51:23

補足

 VBA ができる人は、自分が簡単にできるから、人にも簡単にできるという態度をとったり、できない人を馬鹿にしたりはしません。
 しかし、PowerQueryができる人は平気でやります。その苦しみをわかってもらうため、今回はあえてこのような態度を取りました。

投稿日時 - 2019-11-09 07:16:35

お礼

 私が無能呼ばわりしているのは、VBA ができない人ではなく、私を含めた「簡単」なPowerQueryができない人です。これは、PowerQueryが簡単だという人に対する皮肉です。ただ、VBA ができない人が腹を立てる事は想像したし、態とそのような書き方をしました。PowerQueryが簡単だという連中に腹が立ったし、無責任だと思うからです。
 また、VBA ができない事や、丸投げ質問が悪いとも思っていません。そう思っているなら、VBA の質問には回答しません。

投稿日時 - 2019-11-09 01:29:20

ANo.1

VBAをバカにしちゃいけません。
これはこれで奥が深いと思いますし、無能な人には使いこなせません。

>こんな難しいものを、自分で調べてやれというのでしょうか。

わからなければ、調べると良いですね。

>調べてできないから質問しているのです。

では、調べ方が悪いかそれ以前の知識が足りないのでしょう。

>具体的な操作方法を書いて、初めて回答になるのではないですか。

金払って回答してもらうならそうですね。
別に回答者は義務じゃないから、質問者は回答を見て精査して、必要があれば調べたり、さらに踏み込んだ質問をすれば良いですね。

完璧でない回答は模範解答ではないと思いますが、模範解答しかしてはいけないなら誰も回答しないだけです。

そういう意識だと、好意的に教えてくれる人は少なくなりますし、出来る人にカモられるだけになりますよ。
出来る人が教えてくれるのは、それ自体にメリットがあるからです。

投稿日時 - 2019-11-08 10:33:57

補足

私は、ほとんどの人が簡単だという、PowerQueryがさっぱりわからないほど無能です。
しかし、VBA は使いこなしています。

投稿日時 - 2019-11-08 11:44:58

お礼

質問の仕方が悪かったのか、論点が食い違っています。
VBA を馬鹿にしてはいません。ほめているつもりです。PowerQueryのような訳の分からないものに比べ、簡単で使いやすく、何でもできます。

VBA で回答する人は、必ずプログラムを載せます。私もそうしています。
「VBA で簡単にできます。」とだけ回答する人はいません。
しかし、PowerQueryで回答する人はほとんどこれです。
VBA で回答する人と全然違います。

VBA すらできない人に、PowerQueryが解るとは思えません。

投稿日時 - 2019-11-08 11:42:21

あなたにオススメの質問