> 課のセルは固定したとして
なら「なんとか」実現に近づいた、とは言えるかもしれません。
VBAもなし、配列数式として~もなし、
ただし、作業列だけは(解りやすくするためにも)使わせていただきます。
各関数の意味はお調べいただくとして、
その意図を「なんとか」読み解いてください。
かなり簡略化していますが、ご提示の表に似せた表を用意しました。
範囲はB:P列ですね。
ここに「作業用の列」として、Q列を追加しています。
内容は
Q5セル:=M5&TEXT(COUNTIF(M5:$M$5,M5),"000")
要するに、同じ課の上から数えて何番目を拾っています。
課員が1000人以上ってことはないでしょう・・で3桁です。
※ご自身の表の位置に合わせて変えてくださいね。(以下省略)
本番です。
T列以降に結果を表示しています。
T4セルに「管理課」の文字があるとして、
U4セル:=IFERROR(INDEX($C:$C,MATCH(T$4&TEXT(ROW(A1),"000"),$Q:$Q,0)),"")
長いですが、頑張って読み解いてください。
端的に言うと、
・管理課の上から〇〇番目が
・Q列の何行目にあるのか調べて
・C列から該当する行を探して返す
・なお、見つからなければ空白を返す
という感じの式です。
これを、必要な分だけ行方向にフィル。
添付図ではU8セルまでフィルしています。
続けて、
U9セル:=IFERROR(INDEX($C:$C,MATCH($T$9&TEXT(ROW(A1),"000"),$Q:$Q,0)),"")
U14セル:=IFERROR(INDEX($C:$C,MATCH($T$14&TEXT(ROW(A1),"000"),$Q:$Q,0)),"")
X4セル:=IFERROR(INDEX($C:$C,MATCH(W$4&TEXT(ROW(A1),"000"),$Q:$Q,0)),"")
AA4セル=IFERROR(INDEX($C:$C,MATCH(Z$4&TEXT(ROW(A1),"000"),$Q:$Q,0)),"")
とし、それぞれフィルします。
で、式は完成です。
作業列は文字列を白くしたり非表示にしたりすれば
見た目に邪魔、ということもなかろうと思います。
決して不可能ではありません。
が、なるべくであれば理解できる関数で作る方がいいです。
あとでメンテナンスできなくなるのが一番怖いことだと思いますから。
とりあえず、INDEXとMATCHの組み合わせはいろいろ便利ですよ。
お礼
ご回答ありがとうございます。 無事に配列数式として入力してできました!! 私でも理解できる方法で助かりました!