Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(指定なし : 指定なし)
パワークエリ
投稿日時: 19/10/28 17:09:26
投稿者: chokobanana

クエリをマージしてます。
マージ結果がデータの列名の変更により接続できなくなりました。
  
接続していないクエリの原因となっている列を削除し、次回からエラーに
ならないようにしたいです。
遡って作業(修正)する方法を教えて頂けないでしょうか。
  

回答
投稿日時: 19/10/28 18:45:22
投稿者: んなっと

具体例を示さない質問には、「質問内容からずれた回答」をします。
  
【具体例のある質問例】
データソースのひとつ テーブル1で、売上予算 を 予算 に変更してしまいました。
  
    A     B     C      D   E
1 営業所 売上予算 売上実績 予算達成率 経費
2    A   14000   11000     79% 3000
3    B   10000   12000    120% 2000
4    C   5000   12000    240% 2000
  
他のデータソースの テーブル2,テーブル3,...も同様です。
テーブル1,テーブル2,テーブル3,...マージしてできたクエリのAppend1が、
売上予算が見つからないためにエラーになってしまいます。
最初からやり直す以外に、方法があれば教えてください。
  
【回答】
 クエリツール クエリ
→編集
→ホーム 管理▼
→参照
→テーブル1を選択して、
 
【方法1】右端の ×変更された型 を選択して削除
これでうまくいく可能性もある。
 
【方法2】fxのところが
= Table.TransformColumnTypes(ソース,{{"営業所", type text}, {"売上予算", Int64.Type}, {"売上実績", Int64.Type}, {"予算達成率", type number}, {"経費", Int64.Type}})
とのようになっていたら
= Table.TransformColumnTypes(ソース,{{"営業所", type text}, {"予算", Int64.Type}, {"売上実績", Int64.Type}, {"予算達成率", type number}, {"経費", Int64.Type}})
に変更。
  
→テーブル2,テーブル3,...も同様。
  
まともな回答ではありませんが、あしからず。

投稿日時: 19/10/29 12:40:17
投稿者: chokobanana

具体例?
 
クエリ1とクエリ2をマージしてクエリ3を作成してます。
 
クエリ1の列名がAからBに変更になりました。
列名Aが見つからないのでエラーとなってます。
 
クエリ1とクエリ2は接続してません。
このクエリ1のエラーの原因となっている列を削除し更新しておけば、次回から
エラーにならないのではと考えました。
 
クエリ1を遡って修正する方法を教えて下さい。
クエリ3も修正対象になるのかも??
 
 
 
 
 
 
 
 

回答
投稿日時: 19/10/29 15:00:17
投稿者: んなっと

↓これが具体例。

引用:
    A     B     C      D   E
1 営業所 売上予算 売上実績 予算達成率 経費
2    A   14000   11000     79% 3000
3    B   10000   12000    120% 2000
4    C   5000   12000    240% 2000
  
TransformColumnTypes(ソース,{{"営業所", type text}, {"売上予算", Int64.Type}, {"売上実績", Int64.Type}, {"予算達成率", type number}, {"経費", Int64.Type}})
  
TransformColumnTypes(ソース,{{"営業所", type text}, {"予算", Int64.Type}, {"売上実績", Int64.Type}, {"予算達成率", type number}, {"経費", Int64.Type}})

 
  
私だったら、2回目の質問文はこんなふうに書きます。
  
「すみませんでした。クエリ1はこうです。
  
  営業所   予算 売上実績 予算達成率 経費
1    A   14000   11000     79% 3000
2    B   10000   12000    120% 2000
3    C   5000   12000    240% 2000
  
クエリ2はこう。
  
    A   B     C      D   E
  営業所  予算 売上実績 予算達成率 経費
1    A 11000   16000    145% 2000
2    B 16000   18000    113% 4000
3    C 20000   7000     35% 3000
4    D 16000   18000    113% 4000
  
クエリ3の詳細エディターは以下のようになっています。
  
let
    ソース = Table.Combine({クエリ1, クエリ2}),
    変更された型 = Table.TransformColumnTypes(ソース,{{"予算達成率", Percentage.Type}}),
    フィルターされた行 = Table.SelectRows(変更された型, each List.Contains(Table.ToList(テーブル6), [#"営業所"]))
in
    フィルターされた行
  
それから、クエリ1とクエリ2がブックに接続されていないというのは勘違いです。」

回答
投稿日時: 19/10/29 15:06:20
投稿者: んなっと

あなたは以前の質問でも具体例に関しての注意を受けましたよね。
 
「データの結合」
https://www.moug.net/faq/viewtopic.php?t=78658

引用:
投稿者: んなっと
以下のように必ず具体例と欲しい結果を表形式で書いてください。
  
表1
  
    A   B   C
1 コード 名前 金額
2   101  あ  15
3   102  い  16
4   103  う  17
5   104  え  18
6   105  お  19
7   106  か  20
 
 
投稿者: chokobanana
んなっと 様
  
教えて頂いた方法で無事解決できました。
  
もう少し教えて頂けますでしょうか。

それを考慮すると、今回のこの発言はないな。問題外。
引用:
具体例?

投稿日時: 19/10/29 16:29:29
投稿者: chokobanana

せっかくコメント頂きましたが、思っている解決策とは異なる気がいたします。
ソースの修正ではなく遡って列を削除したいのです。
 
言葉足らずで申し訳ございませんが、今回は列名の変更によるエラーなので
具体的な例は必要ないと判断し提示しておりませんでした。
 
 
(マージ作成時)
クエリ1  クエリ3
 K列    AA列
 A      A
 
 
(データ更新時)
クエリ1  クエリ3
 K列    AA列
 B      A
 
 
クエリ1のK列名がAからBに変更になったのでエラーが出てます。
クエリ1のK列を遡って削除する方法です。
 

回答
投稿日時: 19/10/29 17:28:46
投稿者: んなっと

全然ダメ。
 
【具体例のある質問例】
予算達成率を達成率に名前変更してしまった。不要なので除外したい。
ついでに経費も不要。
 
    A     B     C      D   E
1 営業所 売上予算 売上実績(予算)達成率 経費
2    A   14000   11000     79% 3000
3    B   10000   12000    120% 2000
4    C   5000   12000    240% 2000
 
 
【回答】
このように、無駄な列を除外してクエリをすっきりさせたいときは、
PowerQueryエディターの「他の列を削除」を使います。
 
具体的には、
 
 一番下の方に ×変更された型 などがあるときは、×をクリックして下から削除していき、
 一番上の ソース だけにする。
→ShiftキーやCtrlキーを併用して営業所、売上予算、売上実績を選択
→「列の削除▼→他の列を削除
 
これでエラーのもととなる列や、不要な列がクエリから削除されます。
 
    A     B     C
1 営業所 売上予算 売上実績
2    A   14000   11000
3    B   10000   12000
4    C   5000   12000
 
 
詳細エディターを見ると、Table.SelectColumns(  )が使われることがわかります。
慣れてきたらこれらの文字列の編集だけでも上記の操作と同じことができます。
 
let
    ソース = ******************************,
    削除された他の列 = Table.SelectColumns(ソース,{"営業所", "売上予算", "売上実績"})
in
    削除された他の列

回答
投稿日時: 19/10/30 11:02:55
投稿者: んなっと

あと、単に列を削除したいときは
PowerQuweryエディターで削除したい列を選択して
 列の削除▼ 列の削除 とするだけです。
 
例えば上の例で経費だけを削除した場合、詳細エディターは以下のようになります。
 
let
    ソース = **********************************,
    削除された列 = Table.RemoveColumns(ソース,{"経費"})
in
    削除された列

トピックに返信