Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : 指定なし)
ご教授お願いします
投稿日時: 21/04/05 21:57:44
投稿者: tyson1

     A B C D E F
 1      3/1  3/2  3/3  3/4  3/5
 
 2 Aさん  日勤 日勤 日勤 休み 日勤
 
 3 Bさん  日勤 日勤 休み 日勤 日勤
 
 4 Cさん  日勤 休み 日勤 日勤 日勤
 
 5 Dさん  休み 日勤 日勤 日勤 休み
 
 6 Eさん  日勤 日勤 日勤 休み 日勤 
 
上記の様な勤務表があります。
 A2〜A6セルには名前、B1〜F5セルには日付があります。
 例えば、3/1の休みはDさんです。3/2の休みはCさんです。
 あるセルに、3/1の日付を入力しただけで、その日の休みのDさんが表示されるようにするには
 どうような式にすればいいでしょうか?
 
 
 

回答
投稿日時: 21/04/05 23:57:07
投稿者: WinArrow
投稿者のウェブサイトに移動

1行目にオートフィルタを設定すると、1行目の全部のセルの右側に▼が表示されます。
例えば、「3/1」のセルで
▼をクリックすると「すべて選択」「日勤」「休み」というリストが表示されます。
そこで「すべて選択」のチェックを外し、「休み」にチェックを入れれば、対象データだけが表示されます。
別の日を選択する場合は、いま、選択した日付を「すべて選択」状態に戻します。

回答
投稿日時: 21/04/06 01:01:58
投稿者: Mike

  A  B  C  D  E  F  G  H
1 nam 3/1 3/2 3/3 3/4 3/5 3/6 dat
2 A氏 日 日 日 休 日 休
3 B氏 日 日 休 日 日 休
4 C氏 日 休 日 日 日 休
5 D氏 休 日 日 日 休 休
6 E氏 日 日 日 休 日 休
7
8   3/1 D氏
9   3/2 C氏
10   3/3 B氏
11   3/4 A氏 E氏
12   3/5 D氏
13   3/6 A氏 B氏 C氏 D氏 E氏
 
先ず“下工作”をば、
範圍 A1:A6 を選擇⇒Alt+MC⇒“上端行”のみにチェック入れ⇒[OK]
範圍 B1:H1 を選擇⇒Alt+MC⇒“右端列”のみにチェック入れ⇒[OK]
範圍 B2:G6 を選擇⇒Alt+MMD⇒[名前]ボックス内に文字列 tbl を入力⇒[OK]
 
愈々ゴールです。
次式を入力したセル C8 を下方に5行、右方に4列オートフィル
オ・シ・マ・イ
=IFERROR(INDEX(nam,SMALL(IF(INDEX(tbl,0,MATCH($B8,dat,0))="休",ROW(nam)),COLUMN(A1))-1),"")
【御斷はり】上式は必ず配列數式として入力の事

回答
投稿日時: 21/04/06 06:37:02
投稿者: んなっと

こんな方法も。
 
    A   B   C   D   E   F
1     3/1  3/2  3/3  3/4  3/5
2 Aさん 日勤 日勤 日勤 休み 日勤
3 Bさん 日勤 日勤 休み 日勤 日勤
4 Cさん 日勤 休み 日勤 日勤 日勤
5 Dさん 休み 日勤 日勤 日勤 休み
6 Eさん 日勤 日勤 日勤 休み 日勤
 
 
A21に日付を入力するとして...
 
●右方向にコピーする場合
 
   A   B   C
21 3/4 Aさん Eさん
 
B21
=IFERROR(INDEX($A:$A,AGGREGATE(15,6,ROW($1:$20)/(INDEX($1:$20,,MATCH($A21,$1:$1,0))="休み"),COLUMN(A1))),"")
 
●下方向にコピーする場合
 
    A
21  3/4
22 Aさん
23 Eさん
 
A22
=IFERROR(INDEX($A:$A,AGGREGATE(15,6,ROW($1:$20)/(INDEX($1:$20,,MATCH(A$21,$1:$1,0))="休み"),ROW(A1))),"")

投稿日時: 21/04/06 08:50:11
投稿者: tyson1

]  A B C D E F  G  H  I  J
 1      3/1  3/2  3/3  3/4  3/5         3/1
 
 2 Aさん  日勤 日勤 日勤 休み 日勤         Dさん
 3 Bさん  日勤 日勤 休み 日勤 日勤
 
 4 Cさん  日勤 休み 日勤 日勤 日勤
 
 5 Dさん  休み 日勤 日勤 日勤 休み
 
 6 Eさん  日勤 日勤 日勤 休み 日勤 
 
上記の様な勤務表があります。
 A2〜A6セルには名前、B1〜F5セルには日付があります。
 例えば、3/1の休みはDさんです。3/2の休みはCさんです。
 あるセルに、3/1の日付を入力しただけで、その日の休みのDさんが表示されるようにするには
 どうような式にすればいいでしょうか?
 
 
 追記します
  例えばJ1に3/1を入力すれば、J2にその日の休みのDさんが表示されるようにしたのですが・・・。
  説明不足で申し訳ありません。

  

投稿日時: 21/04/06 08:51:10
投稿者: tyson1

tyson1 さんの引用:
]  A B C D E F  G  H  I  J
 1      3/1  3/2  3/3  3/4  3/5         3/1
 
 2 Aさん  日勤 日勤 日勤 休み 日勤         Dさん
 3 Bさん  日勤 日勤 休み 日勤 日勤
 
 4 Cさん  日勤 休み 日勤 日勤 日勤
 
 5 Dさん  休み 日勤 日勤 日勤 休み
 
 6 Eさん  日勤 日勤 日勤 休み 日勤 
 
上記の様な勤務表があります。
 A2〜A6セルには名前、B1〜F5セルには日付があります。
 例えば、3/1の休みはDさんです。3/2の休みはCさんです。
 あるセルに、3/1の日付を入力しただけで、その日の休みのDさんが表示されるようにするには
 どうような式にすればいいでしょうか?
 
 
 追記します
  例えばJ1に3/1を入力すれば、J2にその日の休みのDさんが表示されるようにしたのですが・・・。
  説明不足で申し訳ありません。

  

回答
投稿日時: 21/04/06 11:22:12
投稿者: WinArrow
投稿者のウェブサイトに移動

引用:
  例えばJ1に3/1を入力すれば、J2にその日の休みのDさんが表示されるようにしたのですが・・・。

複数いたら、どうするのかな?
1人しかいないという前提でしょうか?

回答
投稿日時: 21/04/06 12:55:36
投稿者: んなっと

    A   B   C   D   E   F G H I   J
1     3/1  3/2  3/3  3/4  3/5       3/4
2 Aさん 日勤 日勤 日勤 休み 日勤      Aさん
3 Bさん 日勤 日勤 休み 日勤 日勤      Eさん
4 Cさん 日勤 休み 日勤 日勤 日勤        
5 Dさん 休み 日勤 日勤 日勤 休み        
6 Eさん 日勤 日勤 日勤 休み 日勤        
 
J2
=IFERROR(INDEX($A:$A,AGGREGATE(15,6,ROW($1:$100)/(INDEX($B$1:$F$100,,MATCH(J$1,$B$1:$F$1,0))="休み"),ROW(A1))),"")
下方向・↓
 
FILTER関数が使えればもっと簡単になります。

投稿日時: 21/04/06 13:23:33
投稿者: tyson1

んなっとさん
 
 ありがとうございます。
 複数の休みに人がいる場合はどうなるでしょうか?
 
 以上 よろしくお願いします。

回答
投稿日時: 21/04/06 13:41:12
投稿者: んなっと

J2を下方向にコピーしてみてください。

投稿日時: 21/04/06 13:42:24
投稿者: tyson1

ありがとうございます。
非常に助かりました。