[[20210702004304]] 『【PowerPivot】特定の文字が入っていたら指定した』(みん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『【PowerPivot】特定の文字が入っていたら指定した値を返す』(みん)

パワークエリとパワーピボットを使ってデータ集計などをしています。
元データの[担当者]列のチーム名を区別しチーム毎の売上を抽出したいのですが、区切り記号なども入っていないデータやチーム名の記載がなく名前しか記載のないものが不揃いに有るため、クエリエディタ上での編集が思いつかず、メジャーDAX関数?等でやるしかないのかな と行き詰まってしまい、ご教示いただけましたら幸いです。

担当者マスタは以後の処理に必要になってくるかと思い作成しております。

★目的:パワーピボットでチーム毎に売上を抽出したい
    →担当者はフィルターにかけたいです

元データ(クエリ接続のみ)
[担当者コード] [担当者]   [売上]
 200      チームA 佐藤   5000
 200      チームA田中    1000
 200      チームB 宮本   6000
 200      宮本       9500
 500      チームC大島   12000
 500      大島        300
 ・        ・       ・
 ・        ・       ・
 ・        ・       ・  20000行程度

担当者マスタ(クエリ接続のみ)
[担当者コード] [チーム] [氏名]
 200      チームA   佐藤
 200      チームA   田中
 200      チームB   宮本
 500      チームC   大島
 ・        ・     ・
 ・        ・     ・

関数ですとIF、COUNTA、LOOKUPなどで出せていたのですがこのようなデータが増えることから楽に集計できないかと思い検討しています。
パワークエリやパワーピボットにもワイルドカードはあるのでしょうか。
パワークエリ、ピボットも始めたばかりなので見当違いな内容でしたら申し訳ありません。
VBAは会社の関係上使用できませんので考えておりません、、、
よろしくお願いいたします

< 使用 Excel:Excel2019、使用 OS:Windows10 >


>チーム毎の売上を抽出したい

Power Queryだけで目的のことを実現できませんか。
(こんな提案する理由が、単に、わたしのPCでは
Power Pivotを使えないというだけのですが)

・クエリのマージ
・グループ化

を使うことになります。

(マナ) 2021/07/02(金) 17:30


[担当者]項目が不揃いが問題であるとすると、
これをそのままで前に進むことはありえないでしょう。
再設定を関係者に依頼して修正してもらうしかないと思います。

また、それをマクロなどを使わずに何とかするのも難しいでしょう。
ツール以前のデータ整備の問題に見えます。
(γ) 2021/07/02(金) 17:52


>元データの[担当者]列のチーム名を区別し

この方針を変更して

[担当者コード]をキーに、
担当者マスタから[チーム]を取得してください。

>関数ですとIF、COUNTA、LOOKUPなどで出せていたのですが

ただし、↑これが、よく理解できません。
関数なら普通はVLOOKUPのような気がするので、
わたしが質問内容を誤解しているのかもしれません。

(マナ) 2021/07/02(金) 18:54


やっぱり大きな誤解をしていたようです。
[担当者コード]と[担当者]は、1対1対応ではないのですね。
であれば、不可能です。

[担当者]に、チームC大島 と 大島 
があった場合に、
大島は、チームCと判定したいのでしょうが、

他のチームに大島がいないとは保証できませんよね。

(マナ) 2021/07/03(土) 08:21


>担当者マスタは以後の処理に必要になってくるかと思い作成しております。

担当者マスタを作成したい
という意味と解釈すると

1)チーム名はA〜Zしかない
2)他のチームに、同じ名前かつ同じ担当者コードは存在しない

の条件つきで、トライしてみました。

 let
    ソース = Excel.CurrentWorkbook(){[Name="元データ"]}[Content],
    変更された型 = Table.TransformColumnTypes(ソース,{{"担当者コード", Int64.Type}, {"担当者", type text}, {"売上", Int64.Type}}),
    文字の移行による列の分割 = Table.SplitColumn(変更された型, "担当者", Splitter.SplitTextByCharacterTransition({"A".."Z"}, (c) => not List.Contains({"A".."Z"}, c)), {"担当者.1", "担当者.2"}),
    追加された条件列 = Table.AddColumn(文字の移行による列の分割, "担当者", each if [担当者.2] = null then [担当者.1] else [担当者.2]),
    追加された条件列1 = Table.AddColumn(追加された条件列, "チーム", each if [担当者.2] = null then null else [担当者.1]),
    削除された他の列 = Table.SelectColumns(追加された条件列1,{"担当者コード", "担当者", "チーム"}),
    #"トリム テキスト" = Table.TransformColumns(削除された他の列,{{"担当者", Text.Trim, type text}, {"チーム", Text.Trim, type text}}),
    削除された重複 = Table.Distinct(#"トリム テキスト"),
    グループ化された行 = Table.Group(削除された重複, {"担当者コード", "担当者"}, {{"group", each _, type table [担当者コード=nullable number, 担当者=text, チーム=nullable text]}}),
    追加されたカスタム = Table.AddColumn(グループ化された行, "チーム", each Text.Combine([group][チーム])),
    削除された他の列1 = Table.SelectColumns(追加されたカスタム,{"担当者コード", "チーム", "担当者"})
 in
    削除された他の列1

(マナ) 2021/07/03(土) 08:50


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.