【会員アンケートご協力のお願い】抽選で計5名様に役立つ書籍をプレゼント!

Excel (一般機能)

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

 
(Windows 10 Pro : Excel 2019)
条件に従って転記したい
投稿日時: 24/11/29 16:29:12
投稿者: ラングドシャ

よろしくお願いいたします。
シート:シフト

	A	B	   C
	区分	社員番号  氏名
17	派遣	HT	 派遣01
18	派遣	OO	 派遣02
19	派遣	SS	 派遣03
20	A	1001	 社員01
21	A	1002	 社員02
22	A	1003	 社員03
23	A	1004	 社員04
24	A	1005	 社員05
25	B	1006	 社員06
26	B	1007	 社員07
27	B	1008	 社員08
28	B	1009	 社員09
29	B	1010	 社員10

 ↑
このような氏名のリストがあります。
 
これを実績シートに転記したいです。
 
シート:実績
	E
4	氏名
5	社員01
6	社員02
7	社員03
8	社員04
9	社員05
10	社員06
11	社員07
12	社員08
13	社員09
14	社員10

 
このように、区分がAかBの人を上から順番に表示させたいです。
現在は実績シートのE5に
=IF(OR(シフト!C20="",NOT(LENB(シフト!B20)=4)),"",SUBSTITUTE(シフト!C20," "," "))
とし、社員番号の桁数でチェックし、空白を整えただけの式なので、派遣が増えると、実績シート
の社員01の表示が下へずれていき空白行ができてしまいます。
実績シートのE5〜下に区分AかBの社員が並ぶようにする関数を教えてください。
※実際のシフトシートの区分には、派遣のほかにも「バイト」や「委託」などもあります。
※バイトや委託は社員と同様4桁の社員番号を持っています。今回のリストではたまたま
 チェック範囲外だったのでNOT(LENB(シフト!B20)=4))でチェックしてしまっています。
※シフトシートでは区分ごとに並んでいます。
 
よろしくお願いいたします。

回答
投稿日時: 24/11/29 16:58:03
投稿者: んなっと

「現在は」以降は読んでいません。
 
=IFERROR(INDEX(シフト!C:C,AGGREGATE(15,6,ROW($17:$500)/(MATCH(シフト!$A$17:$A$500,{"A","B"},0)>0),ROW(E1)))&"","")

投稿日時: 24/12/02 16:56:52
投稿者: ラングドシャ

んなっと様
ご回答いただきありがとうございます。
うまくできました。
AGGREGATE関数の応用、難しいです。割り算にする意味など・・・
ありがとうございます。