- ベストアンサー
ExcelのMATCH関数での列指定
- 社員名簿のデータを別シートにINDEX関数を使って抜き出したいが、MATCH関数での列指定が上手くいかない。
- 別シートにある表から家族の年齢を取得したいが、一行に複数の家族がいるため、MATCH関数が使えない。
- エクセルで作られた社員名簿のデータを別シートにINDEX関数を使って抜き出し、家族の年齢を取得する方法はあるか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#01です OFFSET関数は基準セルから行数、列数を指定して離れたセルを参照しますが、基準セルがOFFSET(A1,0,0)、右となりならOFFSET(A1,0,1)になります。C1を指すときはOFFSET(A1,0,2)です 一方MATCH関数で列方向の検索をする場合はA列を基準(1)として何列目かを返します。C列に目的の検索語があれば3が返ります。 MATCHで得た3をOFFSET関数で使うために -1 しています。 今回はOFFSET(基準セル、行位置、列位置、行数、列数)の型も使用しています。OFFSET関数のHELPを見て、意味を考えて見て下さい 20は「20列目まで」を範囲とするために指定しましたが、別に40でも100でもかまいません。20を指定したので(家族氏名、年齢)の対は9個までと書いたのです(最初の2列は社員番号、社員氏名)
その他の回答 (1)
- zap35
- ベストアンサー率44% (1383/3079)
シート1が以下の時に A列 B列 C列 D列 E列 F列 1行目 123456 社員氏名A 家族A1 40 家族A2 18 2行目 234567 社員氏名B 家族B1 35 家族B2 9 3行目 345678 社員氏名C 家族C1 29 シート2に以下の結果を得るなら A列 B列 C列 D列 1行目 123456 社員氏名A 家族A1 40 2行目 123456 社員氏名A 家族A2 18 3行目 234567 社員氏名B 家族B1 35 4行目 234567 社員氏名B 家族B2 9 5行目 345678 社員氏名C 家族C1 29 シート2のD1の式は以下になります =OFFSET(Sheet1!$A$1,MATCH($A1,Sheet1!A:A,0)-1,MATCH($C1,OFFSET(Sheet1!$A$1,MATCH($A1,Sheet1!A:A,0)-1,0,1,20),0)) D1を下方向にコピーしてください。なお扶養家族は9人までOKです
補足
早速の回答ありがとうございます。こんな関数があったとは知りませんでした。勉強になりました。 ちなみに質問なんですが・・・ この式で-1や20という数字は何を意味しているのでしょうか?私にはちょっと複雑すぎて式の意味がいまいちよく理解できません^^;