[[20210129170659]] 『表の並べ替え(表を横軸から縦軸に変換)』(yumi) ページの最後に飛ぶ

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

 

『表の並べ替え(表を横軸から縦軸に変換)』(yumi)

表を横軸から縦軸に変換したいのですが、
OFFSET関数を使うのが近かもしれないというところまではたどり着いたのですが、解決までできなく。。マクロを使わずにできる方法を探しています。

【book1】
  A  B C D   E F G 
1     日勤     夜勤
2 1日 9:00〜12:00 15:00〜20:00
3 2日 8:00〜12:00 14:00〜20:00
4 3日 7:00〜12:00 13:00〜20:00

このような表を別のブックに

【book2】
  A  B C D   
1 日勤 9:00〜12:00
2 夜勤 15:00〜20:00
3 日勤 8:00〜12:00
4 夜勤 14:00〜20:00
5 日勤 7:00〜12:00
4 夜勤 13:00〜20:00

のようにオートフィルでなるよう関数で入力したいのですが、
B1とD1にどのような値を入れれば実現するでしょうか。

  

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


  別ブックは面倒なので、別シートに出す例

  A2セル =IF(ISEVEN(INDEX(ROW(B2#),0)),"日勤","夜勤")
  B2セル =LET(c,COUNT(Sheet1!B:B)*2,INDEX(Sheet1!B:G,INT(SEQUENCE(c,1,2,0.5)),MOD(SEQUENCE(c,3,1,1)-1,6)+1))

  <別シート 結果図>
 行  __A__  __B__  _C_  __D__
  1         開始        終了 
  2  日勤    9:00  ~    12:00
  3  夜勤   15:00  ~    20:00
  4  日勤    8:00  ~    12:00
  5  夜勤   14:00  ~    20:00
  6  日勤    7:00  ~    12:00
  7  夜勤   13:00  ~    20:00

  >オートフィルでなるよう

  オートフィル不要 (A2,B2 以外には何も入力しない様に。スピルの邪魔になるので)

(半平太) 2021/01/29(金) 20:03


半平太さんの数式で期待の結果が得できることを確認しました。
わたしのレベルでは、式の意味は理解できませんが。

質問者さんからの応答がないまま
過去ログ行きとなりましたので
場所をお借りして、Power Queryの練習に使用させてください。

 こんな出力結果になりました。

    -A-   -B-   -C-     -D-
 1 勤務   開始   ~      終了
 2 日勤   9:00   ~     12:00
 3 夜勤  15:00   ~     20:00
 4 日勤   8:00   ~     12:00
 5 夜勤  14:00   ~     20:00
 6 日勤   7:00   ~     12:00
 7 夜勤  13:00   ~     20:00

 let
    ソース = Excel.Workbook(File.Contents("C:\****\***\*****.xlsx"), null, true),
    Sheet1_Sheet = ソース{[Item="Sheet1",Kind="Sheet"]}[Data],
    フィルターされた行 = Table.SelectRows(Sheet1_Sheet, each [Column1] <> null and [Column1] <> ""),
    変更された型 = Table.TransformColumnTypes(フィルターされた行,{{"Column2", type time}, {"Column4", type time}, {"Column5", type time}, {"Column7", type time}}),
    結合された列 = Table.CombineColumns(Table.TransformColumnTypes(変更された型, {{"Column2", type text}, {"Column4", type text}}, "ja-JP"),{"Column2", "Column3", "Column4"},Combiner.CombineTextByDelimiter("#(tab)", QuoteStyle.None),"日勤"),
    結合された列1 = Table.CombineColumns(Table.TransformColumnTypes(結合された列, {{"Column5", type text}, {"Column7", type text}}, "ja-JP"),{"Column5", "Column6", "Column7"},Combiner.CombineTextByDelimiter("#(tab)", QuoteStyle.None),"夜勤"),
    ピボット解除された列 = Table.UnpivotOtherColumns(結合された列1, {"Column1"}, "属性", "値"),
    削除された列 = Table.RemoveColumns(ピボット解除された列,{"Column1"}),
    区切り記号による列の分割 = Table.SplitColumn(削除された列, "値", Splitter.SplitTextByDelimiter("#(tab)", QuoteStyle.Csv), {"値.1", "値.2", "値.3"}),
    変更された型1 = Table.TransformColumnTypes(区切り記号による列の分割,{{"値.1", type time}, {"値.2", type text}, {"値.3", type time}}),
    #"名前が変更された列 " = Table.RenameColumns(変更された型1,{{"属性", "勤務"}, {"値.1", "開始"}, {"値.2", "~"}, {"値.3", "終了"}})
 in
    #"名前が変更された列 "

元データがあるブックのファイル名とか保存フォルダ名を変更したい場合は
https://excel-excellent-technics.com/excel-powerquery-change-datasource-9923

(マナ) 2021/02/05(金) 17:24


コメント返信:

[ 一覧(最新更新順) ]


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