[[20220614152603]] 『パワークエリ 関数で結果を出したものに連番を振』(まっち) ページの最後に飛ぶ

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

 

『パワークエリ 関数で結果を出したものに連番を振りたい』(まっち)

 A     B       C      D 
名前    日付      カウント   連番 

田中 2022/04/01     2022/04田中 2022/04田中1
田中 2022/04/05     2022/04田中 2022/04田中2
田中                
田中 2022/05/01     2022/05田中 2022/05田中1
田中  
田中 2022/05/03     2022/05田中 2022/05田中2
田中 2022/05/05     2022/05田中 2022/05田中3

C列には、if [日付]<>"" then [年]&[月]&[名前] else ""
といった感じでif関数の結果が入力されています。

D列に記載したような連番を追加したデータを入れたいのですが、
Table.AddIndexColumnを使ってもうまくいかないのです。

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


 let
    ソース = Excel.CurrentWorkbook(){[Name="テーブル1"]}[Content],
    変更された型 = Table.TransformColumnTypes(ソース,{{"名前", type text}, {"日付", type date}}),
    挿入された年 = Table.AddColumn(変更された型, "年", each Date.Year([日付]), Int64.Type),
    挿入された月 = Table.AddColumn(挿入された年, "月", each Date.Month([日付]), Int64.Type),
    グループ化された行 = Table.Group(挿入された月, {"名前", "年", "月"}, {{"月別テーブル", each _, type table}}),
    追加されたカスタム = Table.AddColumn(グループ化された行, "連番付きのテーブル", each Table.AddIndexColumn([月別テーブル], "月別連番", 1, 1)),
    展開された連番付きのテーブル = Table.ExpandTableColumn(追加されたカスタム, "連番付きのテーブル", {"名前", "日付", "年", "月", "月別連番"}, {"連番付きのテーブル.名前", "連番付きのテーブル.日付", "連番付きのテーブル.年", "連番付きのテーブル.月", "連番付きのテーブル.月別連番"})
 in
    展開された連番付きのテーブル
(´・ω・`) 2022/06/14(火) 16:05

ありがとうございます。

やっぱり、C列がif関数で文字列を結合した結果に対して連番は振れないようです。

C列がデータのベタ打ちなら、 Table.AddColumnでちゃんと連番振れるのに、謎です。

でも、いただいたご回答、すっごく勉強になります。
すこしづつでもがんばっていきます!

(まっち) 2022/06/14(火) 16:23


 >C列がif関数で文字列を結合した結果に対して連番は振れないようです
 なんでですか?
 なんでそう思いましたか?
(´・ω・`) 2022/06/14(火) 16:28

 A  B  C   D
1 2022 4  田中 20224田中([A]&[B]&[C]で出した答え)
2 2022 4  田中 20224田中([A]&[B]&[C]で出した答え)
3 2022 4  田中 20224田中([A]&[B]&[C]で出した答え)
4 2022 5  田中 20225田中([A]&[B]&[C]で出した答え)
5 2022 5  田中 20225田中([A]&[B]&[C]で出した答え)

E列でやってみると D列がすべて空欄になり E列に1〜5の連番結果がでるのです。

D列が結果じゃなくテキストーデータだと 1 2 3 1 2 とちゃんとグループごとの連番がでるのです。
(なにか変なことしてないつもりなのですが・・・)

https://sakatakablog.com/excel/1627/
などなどいろいろなページで検索中です。

ご対応ありがとうございます。がんばります!
(まっち) 2022/06/14(火) 16:48


 >E列でやってみると D列がすべて空欄になり E列に1〜5の連番結果がでるのです。
 「E列でやってみる」の内容がわかりません。E列ありませんけど。
 
 相手に伝わるように書くの大事ですよ
(´・ω・`) 2022/06/14(火) 17:07

この質問 結局解決したのでしょうか。
順番を変えたくないならグループ化しなければいいんですが。

let

    ソース = Excel.CurrentWorkbook(){[Name="テーブル1"]}[Content],
    変更された型 = Table.TransformColumnTypes(ソース,{{"名前", type text}, {"日付", type date}}),
    年月名前列の追加 = Table.AddColumn(変更された型, "年月名前", each Date.ToText([日付],"yyyy/MM")&[名前]),
    緩衝リスト = List.Buffer(連番列の追加[年月名前]),
    連番列の追加 = Table.AddIndexColumn(年月名前列の追加, "連番", 1, 1),
    カウント列の追加 = Table.AddColumn(連番列の追加, "カウント", each
    let 年月名前=[年月名前], カウント=List.Count(List.Select(List.FirstN(緩衝リスト,[連番]), each _=年月名前))
    in 年月名前 & Text.From(カウント))
in
    カウント列の追加

こんなことするよりカスタム関数を作ったほうがいいとは思います。
(d-q-t-p) 2022/06/16(木) 06:53


悪文本当に申し訳ございません。
解決いたしました。

(同じ事象に遭遇している人のために。)
展開されたときデータが消えたのではなく、ソートされ、空白が先に表示されていたので、データが削除されたように見えたことが原因でした。
下の75万行目を確認したら、きれいに並んでいました。

たぶん、めちゃくちゃはずかしいレベルの失態だと思います。
本当に申し訳ございませんでした。

解決した詳細エディターは、以下のような感じです。
順番を変えたくないならグループ化しないといいんですね。勉強になります。
ありがとうございました。

let

    ソース = Excel.CurrentWorkbook(){[Name="テーブル1"]}[Content],
    変更された型 = Table.TransformColumnTypes(ソース,{{"カウンタ", type text}}),
    グループ化された行 = Table.Group(変更された型, {"カウンタ"}, {{"カウント", each _, type table}}),
    追加されたカスタム = Table.AddColumn(グループ化された行, "カスタム", each Table.AddIndexColumn([カウント],"職員別カウンタ",1,1)),
    削除された列 = Table.RemoveColumns(追加されたカスタム,{"カウンタ", "カウント"}),
    #"展開された カスタム" = Table.ExpandTableColumn(削除された列, "カスタム", {"カウンタ", "職員別カウンタ"}, {"カウンタ", "職員別カウンタ"}),
    変更された型1 = Table.TransformColumnTypes(#"展開された カスタム",{{"カウンタ", type text}, {"職員別カウンタ", type text}}),
    追加されたカスタム1 = Table.AddColumn(変更された型1, "カスタム", each [カウンタ] & [職員別カウンタ])
in
    追加されたカスタム1

(まっち) 2022/06/16(木) 08:32


コメント返信:

[ 一覧(最新更新順) ]


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