最新閲覧日:

エクセルで作られた社員名簿のデータを別シートにINDEX関数を使って抜き出したいのですが、MATCH関数での列指定が上手くいきません。
表は
   A    B     C     D     E     F
1 社員番号 社員氏名A 家族1氏名 家族1年齢 家族2指名 家族年齢
2 社員番号 社員氏名B 家族1氏名 家族1年齢 家族2指名 家族年齢
3 社員番号 社員氏名C 家族1氏名 家族1年齢 家族2指名 家族年齢
と、社員1名につきその家族が一行で表示されています。
これを別シートに家族1名につき一行の表があるので、年齢だけをこの表から持っていきたいのですが、一行に複数の家族がいるので、MATCH関数での列指定が上手くいきません。何かいい方法はないでしょうか?

A 回答 (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列は社員番号、社員氏名)
    • good
    • 0

シート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という数字は何を意味しているのでしょうか?私にはちょっと複雑すぎて式の意味がいまいちよく理解できません^^;

補足日時:2007/09/26 15:56
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報