階層レベルで区切られた値を個別の割り当てに変換する

階層レベルで区切られた値を個別の割り当てに変換する

区切られたユーザーと階層内の割り当てられたレベルのリストがあります。各ユーザーを独自の行に配置しながら、元のユーザーに割り当てられたレベルを維持したいと考えています。

まず最初に、次のことを始めます。

最後に、次のことを述べたいと思います。

ユーザー レベル1
[メールアドレス] 地域 1
[メールアドレス] 地域 1
[メールアドレス] 地域 1

何百もの行と複数の階層レベルがあるため、列とコピーにテキストを入力するだけでは時間がかかりすぎます。

可能であれば、VBA を使用しないソリューションを希望します。

答え1

Office 365 の場合:

=LET(
    us,A2:A201,
    hr,B2:D201,
    ttl,A1:D1,
    VSTACK(ttl,DROP(REDUCE("",us&"|"&BYROW(hr,LAMBDA(z,TEXTJOIN("{",FALSE,z))),LAMBDA(a,b,LET(c,TEXTAFTER(b,"|"),VSTACK(a,HSTACK(TEXTSPLIT(TEXTBEFORE(b,"|"),,";"),DROP(TEXTSPLIT(REPT(c&"}",ROWS(TEXTSPLIT(b,,";"))),"{","}"),-1)))))),1)))

;基本的に、(ユーザー) 範囲内でテキストを分割しますus。次に、(階層) 範囲内で行ごとに値を繰り返しますhr。次に、それらを水平に積み重ねます。

次に、REDUCE は各行の出力を垂直に積み重ねます。最後に、ttl(タイトル) 範囲を積み重ねます。

ここに画像の説明を入力してください

答え2

  1. データ範囲を選択してINSERTメニューへ進む

ここに画像の説明を入力してください

  1. 必要に応じて選択しTABLE、チェックを入れたり外したりします。My Table Has Headers

ここに画像の説明を入力してください

  1. データ範囲を選択し、DATAメニューに移動してクリックしますFrom Table/Range

ここに画像の説明を入力してください

  1. Power Query Editorを選択しcolumn1、 をクリックしてSplit Column、 をクリックしますBy Delimiter

ここに画像の説明を入力してください

  1. ;カスタム区切り文字として を入力し、 をクリックしますokay

ここに画像の説明を入力してください

  1. Column2ドロップダウンを選択してUnpivot Columnsから を選択しますUnpivot Other Columns

ここに画像の説明を入力してください

  1. 列を選択しますAttribute

ここに画像の説明を入力してください

  1. 列を右クリックして選択Remove

ここに画像の説明を入力してください

  1. メニューからHOMEクリックClose and Load

ここに画像の説明を入力してください

関連情報