[[20211212011823]] 『シフト表から当日の出勤』(おぎも) ページの最後に飛ぶ

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

 

『シフト表から当日の出勤』(おぎも)

質問させていただきます。よろしくお願いいたします。

指定した日付の勤務時間が入力されている行を行をつめて表示させたいのですが、うまくいきません。

下記のようなシフト表があります。

	A	B		C		D
		4月1日		4月2日		4月3日
1	Aさん	15:00-18:00	10:00-19:00	
2	Bさん			10:00-18:00	10:00-19:00
3	Cさん	10:00-19:00			10:00-19:00

同じシートのA4に4月1日と入力した場合

	A
5	15:00-18:00
6	10:00-19:00

という結果を出したいのですが、どのようにしたらよいかご教示いただきたいと思います。
ネットでいろいろ調べながらいじっていたら勤務時間が入っている人の名前を出すことはできたのですが、時間だけ抜き出すことができません。

よろしくお願いいたします。

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


 提示例だと日付の行は何行目になるんですか?
 1行目にセル内改行して、時間と一緒に入力しているのですか?

    |[A]  |[B]        |[C]        |[D]        
 [1]|     |4月1日     |4月2日     |4月3日     
 [2]|Aさん|15:00-18:00|10:00-19:00|           
 [3]|Bさん|           |10:00-18:00|10:00-19:00
 [4]|Cさん|10:00-19:00|           |10:00-19:00

 仮に上記の様だとして、検索日付を入力するセルが「A5」だとしたら、
 VBAで良ければ以下でどうでしょうか。

 Sub Macro1()
    Dim col As Long
    With Range("A5")
        Range(.Offset(1), .End(xlDown)).Clear
        On Error GoTo iError
        col = WorksheetFunction.Match(.Cells, Rows(1), 0)
        Cells(2, col).Resize(3).SpecialCells(xlCellTypeConstants, xlTextValues).Copy .Offset(1)
    End With
    Exit Sub
iError:
    MsgBox "日付がありません"
 End Sub

 ※Cells(2, col).Resize(実際の人数)に変更して下さい。
(焼肉) 2021/12/12(日) 07:08

 数式だとして

 >勤務時間が入っている人の名前を出すことはできたのですが
 これはどうやって、どこに抽出したんですか?

 それができてるのなら、VLOOKUP とか INDEX〜MATCH で簡単にできると思いますけど?

 一応・・・

	A	B	C	D
1		4/1	4/2	4/3
2	Aさん	15-18	10-19	
3	Bさん		10-18	10-19
4	Cさん	10-19		10-19
5				
6	4/1	← 抽出条件		
7	Aさん	15-18		
8	Cさん	10-19		
9				

 A7 =IF($A$6="","",IFERROR(INDEX(A:A,AGGREGATE(15,6,ROW($A$2:$A$4)/(INDEX($B$2:$D$4,0,MATCH($A$6,$B$1:$D$1,0))<>""),ROW(A1))),""))
 下コピー
 ※実際の表の位置がどうなっていようと、最後の方の ROW(A1)の「A1」を変更しないように

 B7 =IF(A7="","",VLOOKUP(A7,$A$2:$D$4,MATCH($A$6,$A$1:$D$1,0),FALSE))
 下コピー

 以上
(笑) 2021/12/12(日) 10:27

 数式で、作業列を使ってもいいのなら・・・

 例示通り、元表はD列までだとして、E列を作業列とすると

 E2 =IFERROR(IF(INDEX(B2:D2,MATCH($A$6,$B$1:$D$1,0))<>"",ROW(),""),"")
 4行目まで下コピー

 A7 =IF($A$6="","",IFERROR(INDEX(A:A,SMALL($E$2:$E$4,ROW(A1))),""))
 下コピー
 ※このROW(A1)の[A1」も変更しないように

 B7以下は、先の回答と同じ VLOOKUP で

 以上
(笑) 2021/12/12(日) 14:34

お二方ご回答いただきありがとうございます。

焼肉さま
せっかく教えていただいたのですが、vbaって何というレベルにつき使いこなすことができませんでした。
お時間頂戴してしまったのに申し訳ございません。

笑さま
お教えいただいたものでバッチリやりたいことができました。

>勤務時間が入っている人の名前を出すことはできたのですが これはどうやって、どこに抽出したんですか? ネットで見つけたサンプルをあてはめたら奇跡的にできてしまったのです。
(おぎも) 2021/12/12(日) 18:49

コメント返信:

[ 一覧(最新更新順) ]


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