- ベストアンサー
VLOOKUP関数について
先ほどはお答えくださり、ありがとうございました。 >勘定科目2はVLOOKUP関数で抽出できますが補助科目2は別の関数で抽出しないと目的通りになりません。 とのことでしたが、ベストアンサーに選ばせていただいた方の式だと、 抽出が目的通りにならないのでしょうか? =VLOOKUP(D2,INDIRECT("K" & MATCH(C2,J:J,0) & ":L" & MATCH(C2,J:J,0)+COUNTIF(J:J,C2)-1),2,FALSE) お時間のあるときで構いません。 今後のためにご教授いただけますと助かります。 よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
回答No.1の追加です。 VLOOKUP関数で検索範囲を可変にする方法としてOFFSET関数を使うと下記のようになります。 =VLOOKUP(D2,OFFSET($K$1,MATCH(B2,I:I,0)-1,0,COUNTIF(I:I,B2),2),2) INDIRECT関数よりシンプルになると思います。 動作としてはINDIRECT関数で検索範囲を可変にしたときと同じなのでマスターの表がソートされていない場合は正しい結果を得られないこともあります。
その他の回答 (1)
- bunjii
- ベストアンサー率43% (3589/8249)
>ベストアンサーに選ばせていただいた方の式だと、抽出が目的通りにならないのでしょうか? 揚げ足取りのような質問ですね。 下記の質問のことですよね? https://okwave.jp/qa/q9583284/a26763798.html 提示のマスターからでは抽出できています。 数式の考え方としてはスマートでは無いように思われます。 つまり、抽出対象範囲の先頭を見つけて同じ値の数から1つ減算した数を加えて抽出範囲を決めています。 手法としてはINDIRECT関数で抽出範囲を決める方法とOFFSET関数で決める方法があります。 OFFSET関数を使う方が少しスマートに見えるかも知れません。 この方法では隙間なく整然と並んでいるマスターでなければなりません。 当方の回答はマスターが乱雑に並んでいても勘定科目1と補助科目1が一致している行から目的の値を探していますので間違いなく抽出できます。
お礼
お忙しいところ、ありがとうございます。 VLOOKUP関数は普段から使うことが多く、 馴染みがあるため、 今後のためにより正しく抽出することが出来る方法があるのであれば、 伺いたいと思いました。 不快にさせてしまったようでしたら、 すみませんでした。
お礼
昨日、OFFSET関数もあるとお教えいただいて、 自分なりに調べているところでした。 OFFSET関数にCOUNTIF関数を合わせていくのですね。 いろいろと勉強になりました。 ありがとうございました。