[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『勉強中です』(アルス)
A B C D
1 役割 担当者
2 〇〇責任者 Aさん Fさん
3 〇●責任者 Gさん Bさん
4 〇〇担当 Lさん Mさん
5 〇●担当 Jさん Cさん Dさん
6 ●●担当 Eさん
7 〇〇係 Kさん Iさん Hさん
上記のデータを違うシートに
A B
1 氏名 役割
2 Aさん
3 Bさん
4 Cさん
5 Dさん
6 Eさん
7 Fさん
8 Gさん
9 Hさん
10 Iさん
11 Jさん
12 Kさん
13 Lさん
14 Mさん
B列にINDEX MATCH 関数を使って役割を出す事って出来ますか?
他のやり方はあると思いますがINDEX MATCH 関数を使って出来るのか知りたいです。
< 使用 Excel:Excel2016、使用 OS:Windows10 >
さて、やり方はいろいろありそうですが、一案として。
(1)
手元にExcel2007しかないので長くなりますが↓でA列の名前が対象範囲の何行目に検索値があるか求まります。
=SUM(IFERROR(MATCH(A2,Sheet1!$B$2:$B$7,0),0),IFERROR(MATCH(A2,Sheet1!$C$2:$C$7,0),0),IFERROR(MATCH(A2,Sheet1!$D$2:$D$7,0),0))
(※未検証ですがExcel2010以上であればAGGREGATE関数を使うのがよさそう。)
https://www.newcom07.jp/EXCEL-database/blog/excel_coffee_break/2014/05/aggregate.html
(2)
何らかの方法で範囲内のどの行であるのか特定できれば、
=INDEX(Sheet1!$A$2:$A$7,【範囲の何行目】)
とすればINDEX関数で参照できそうに思います。
(もこな2) 2019/04/09(火) 21:09
(隠居じーさん) 2019/04/10(水) 08:27
Sheet1 A B C D 1 役割 担当者 2 〇〇責任者 Aさん Fさん 3 〇●責任者 Gさん Bさん 4 〇〇担当 Lさん Mさん 5 〇●担当 Jさん Cさん Dさん 6 ●●担当 Eさん 7 〇〇係 Kさん Iさん Hさん
Sheet2 A B 1 氏名 役割 2 Aさん 3 Bさん 4 Cさん 5 Dさん 6 Eさん 7 Fさん 8 Gさん 9 Hさん 10 Iさん 11 Jさん 12 Kさん 13 Lさん 14 Mさん
Sheet2のB2:=IFERROR(INDEX(Sheet1!A$2:A$1001,SUMPRODUCT((Sheet1!B$2:D$1001=A2)*(ROW(A$1:A$1000)))),"") 下方向にフィルコピー
一応1000件まで対応 (bi) 2019/04/10(水) 08:47
>INDEX MATCH 関数にこだわらずにいい関数ないかな?
なんで最初の質問は INDEX〜MATCH 限定だったんですか?
>Sheet2のB2:=IFERROR(INDEX(Sheet1!A$2:A$1001,SUMPRODUCT((Sheet1!B$2:D$1001=A2)*(ROW(A$1:A$1000)))),"")
↑ は、どんなエラーを想定して IFERROR を使ってるんですかね?
B2 =INDEX(Sheet1!A:A,SUMPRODUCT((Sheet1!$B$2:$D$50=A2)*ROW($A$2:$A$50))) または B2 =INDEX(Sheet1!A:A,MAX(INDEX((Sheet1!$B$2:$D$50=A2)*ROW($A$2:$A$50),0)))
範囲は必要最小限に!
■補足 Sheet2の名前は必ず元表(Sheet1)にある、という前提 ない場合もあるんだったら
B2 =IF(COUNTIF(Sheet1!$B$2:$D$50,A2),INDEX(Sheet1!A:A,MAX(INDEX((Sheet1!$B$2:$D$50=A2)*ROW($A$2:$A$50),0))),"")
元表に同じ名前が複数あることは想定してません。
以上、参考まで (笑) 2019/04/10(水) 11:07
>Sheet2の名前は必ず元表(Sheet1)にある、という前提 >ない場合もあるんだったら
↓ でもいいかも
B2 =INDEX(Sheet1!A:A,MIN(INDEX((Sheet1!$B$2:$D$50<>A2)*1000+ROW($A$2:$A$50),0)))&""
A1002以降のセルは空白、という前提で
または B2 =IFERROR(INDEX(Sheet1!A:A,MIN(INDEX((Sheet1!$B$2:$D$50<>A2)*10^7+ROW($A$2:$A$50),0))),"")
参考まで (笑) 2019/04/10(水) 12:07
biさんの表をお借りして
Sheet1 A B C D 1 役割 担当者 2 〇〇責任者 Aさん Fさん 3 〇●責任者 Gさん Bさん 4 〇〇担当 Lさん Mさん 5 〇●担当 Jさん Cさん Dさん 6 ●●担当 Eさん 7 〇〇係 Kさん Iさん Hさん
Sheet2 A B C D E F 1 氏名 役割 作業列1 作業列2 作業列3 作業列4 2 Aさん 3 Bさん 4 Cさん 5 Dさん 6 Eさん 7 Fさん 8 Gさん 9 Hさん 10 Iさん 11 Jさん 12 Kさん 13 Lさん 14 Mさん
(1)Sheet2のC2セルに↓を設定して、同シートのC2:E14にコピペ =IFERROR(MATCH($A2,Sheet1!B$2:B$7,0),0)
(2)Sheet2のF2セルに↓を設定して、同シートのF2:F14にコピペ =SUM(C2:E2)
(3)Sheet2のB2セルに↓を設定して、同シートのB2:B14にコピペ =INDEX(Sheet1!$A$2:$A$7,F2)
このようにすれば、どの段階で「うまくいかなかったのか」が特定できるとおもいます。
(もこな2) 2019/04/10(水) 12:19
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.