『勤務指定内容から日付を入力することで担当者を表示させる』(Excel勉強中)
初めて質問します。
一つのシート上で「A2」から「A32」までに1か月分の日付、「B1」から「N1」までに社員名を入れた勤務表です。勤務符号は6種類ほどあります。例:日勤・早出・中勤・夜勤・公休・有休です。
この勤務表を利用して、「X2」から「X7」までに6個の勤務種類を入力しておいて、「Y1」に任意の日付(表の「A列」の日付)を入力したときに「Y2」から「Y7」に該当する社員名を表示させたいのですが、どのようにすればいいか教えていただけますでしょうか?
宜しくお願いします。
< 使用 Excel:Excel2021、使用 OS:Windows11 >
(冷水) 2025/09/29(月) 22:01:00
|[A] |[B] |[C] |[D] |[E] |[F] |[G] |[H] |[I] |[J] |[K] |[L] |[M] |[N] |[O]|[P]|[Q]|[R]|[S]|[T]|[U]|[V]|[W]|[X] |[Y]|[Z]
[1] | |山田|撫佐|水野|高橋|伊東|谷岡|安成|日名|小嶋|中瀬|深井|吉田|畠山| | | | | | | | | | | |
[2] |9月1日 | | | | | | | | | | | | | | | | | | | | | | |日勤| |
[3] |9月2日 | | | | | | | | | | | | | | | | | | | | | | |早出| |
[4] |9月3日 | | | | | | | | | | | | | | | | | | | | | | |中勤| |
[5] |9月4日 | | | | | | | | | | | | | | | | | | | | | | |夜勤| |
[6] |9月5日 | | | | | | | | | | | | | | | | | | | | | | |公休| |
[7] |9月6日 | | | | | | | | | | | | | | | | | | | | | | |有休| |
[8] |9月7日 | | | | | | | | | | | | | | | | | | | | | | | | |
[9] |9月8日 | | | | | | | | | | | | | | | | | | | | | | | | |
[10]|9月9日 | | | | | | | | | | | | | | | | | | | | | | | | |
[11]|9月10日| | | | | | | | | | | | | | | | | | | | | | | | |
[12]|9月11日| | | | | | | | | | | | | | | | | | | | | | | | |
[13]|9月12日| | | | | | | | | | | | | | | | | | | | | | | | |
[14]|9月13日| | | | | | | | | | | | | | | | | | | | | | | | |
[15]|9月14日| | | | | | | | | | | | | | | | | | | | | | | | |
[16]|9月15日| | | | | | | | | | | | | | | | | | | | | | | | |
勤務符号を入力してください。
(IT) 2025/09/29(月) 22:53:27
説明不足で申し訳ありません。勤務の重複はあります。なので、「Z2」「AA2」「AB2」と同じ勤務の方が表示されればいいのです。
宜しくお願いします。
(Excel勉強中) 2025/09/29(月) 23:02:44
簡単なモデル例で回答します。適当に修正してください。
A列 B列 C D E X列 Y列
1 Aさん Bさん Cさん Dさん 2025/10/1
2 2025/9/29 日勤 日勤 日勤 日勤 日勤 Bさん
3 2025/9/30 有休 有休 日勤 日勤 有休 Cさん,Dさん
4 2025/10/1 早出 日勤 有休 有休 早出 Aさん
5 2025/10/2 日勤 有休 日勤 有休
6 2025/10/3 有休 日勤 有休 日勤
Y2セル
=LET(
a,FILTER($B$2:$E$6,$A$2:$A$6=$Y$1),
b,FILTER($B$1:$E$1,a=X2,""),
TEXTJOIN(",",TRUE,b)
)
下にコピー
(xyz) 2025/09/29(月) 23:15:34
1セルに一人だけ表示するなら
Y2セルに
=LET(
a,FILTER($B$2:$E$6,$A$2:$A$6=$Y$1),
FILTER($B$1:$E$1,a=X2,"")
)
として、下にコピーです。(=の前の半角スペースは入れないようにしてください)
また指定日付にデータが無いケースもありうるなら、
a,FILTER($B$2:$E$6,$A$2:$A$6=$Y$1,""),
とすることでエラー回避できます。
(xyz) 2025/09/30(火) 06:34:03
FILTER関数は、スプレッドシートとExcelでは 第3引数以降が異なります 確認してください (はてな) 2025/10/02(木) 21:38:31
ご指摘のとおり仕様をよく確認してください。
【Google Spreadsheet】
Y2セルに下記を入れ、下にコピーします。
=LET(
a,FILTER($B$2:$E$6,$A$2:$A$6=$Y$1),
IF(ISERROR(a),"",
IFERROR(FILTER($B$1:$E$1,a=X2),"")
)
)
【参考まで】 なお、Excel2021では使えないBYROW関数(Excel365,2024で使用可)が、 Google Spreadsheetでは使えます。
Y2セルに次の式を入れることで、(コピーしなくても)複数の行の結果を表示できます。
=BYROW(X2:X5,
LAMBDA(shift,
LET(
a,FILTER(B2:E6,A2:A6=Y1),
IF(ISERROR(a),"",
IFERROR(FILTER(B1:E1,a=shift),"")
)
)
)
)
(xyz) 2025/10/03(金) 06:26:20
今後ともよろしくお願いします。
(Excel勉強中) 2025/10/03(金) 16:46:54
Googl Spreadsheetの使用例は、こうでしたね。いやはやなんとも。
=LET(
a,FILTER(B2:E6,A2:A6=Y1),
IF(ISERROR(a),"",
BYROW(X2:X5,
LAMBDA(shift,
IFERROR(FILTER(B1:E1,a=shift),"")
)
)
)
)
(xyz) 2025/10/05(日) 20:26:33
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.