• ベストアンサー

条件によりデータが異なる場合

sheet1に下記項目があります  A     B    C     D    E    F faxコード 振込金額 相手負担 請求金額 当方負担 支払先 520     49370    630    50000       佐藤 300     25000          25000   420   鈴木         sheet2に以下のコード表があります  A    B    C 支払先 当方負担 先方負担 佐藤   200    520 鈴木   300    530 やりたい事:sheet1のfaxコード欄(相手負担・当方負担欄のデータの有無を読み取る)に佐藤、鈴木の520、300のコードを自動的に入れる関数をご教授ください。

質問者が選んだベストアンサー

  • ベストアンサー
  • shiotan99
  • ベストアンサー率68% (140/203)
回答No.3

No.1です。 VLOOKUP関数を使うなら Sheet1 の A2に =IF(COUNTIF(Sheet2!A:A,F2),VLOOKUP(F2,Sheet2!A:C,2+(C2<>""),FALSE),"") でいいと思います。( コピー&ペーストしてみてください ) 結果は、No.1と同じです。 ◆ VLOOKUP(検索値,範囲,列番号,検索の型) の列番号の部分が、2+(C2<>"") です。 (C2<>"") は、C2セルが空白ではない、という論理式( 条件 )で、C2( 相手負担 )が空白でなければ真( TRUE )、空白なら偽( FALSE )です。 TRUE とか FALSE の論理値は、四則計算をすると、TRUEは 1、FALSEは 0 になります。 この場合の四則計算は 2+(C2<>"") です。 ですから、2+(C2<>"") は、 C2 が空白でなければ、2 + TRUE、つまり 2 + 1 = 3( 列目 ) C2 が空白なら、2 + FALSE、つまり 2 + 0 = 2( 列目 ) になります。 このようにすることで、 C2( 相手負担 )が空白でなければ、Sheet2 の A列から 3列目、つまり C列を参照し、 C2が空白なら Sheet2 の B列を参照することになり、1つの VLOOKUP関数で条件によって参照する列を変えることができます。 No.1 の INDEX関数で使っている 2+(C2<>"") も同じことです。

osm310
質問者

お礼

大変参考になりました 有難うございました

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

>faxコード  faxは相手のファクシミリの番号と関係があるのですか。 そのコードとは何かイメージできない >相手負担、先方負担は同じことですか。質問では、合わせた表現にしてほしい。 ○faxコード欄にコードを入れたい。現在は空白ですか? ○入れる情報を取ってくる方法は、Sheet1の支払い先の佐藤、鈴木が、Sheet2の支払い先と一致する行を探し、当方負担がスペースなら Sheet2の相手(=先方)負担を、相手負担が空白なら当方負担を引っ張って、faxコードにセットしたい こういうことですか。 それにしても当方負担の420は単位はエンですか。 Sheet1とSheet2の負担の額が佐藤で630と520のように違うのでしょうか? IF文でVLOOKUPを使う問題ではないでしょうか?。 例データ Sheet1に faxコード 振込金額 相手負担 請求金額 当方負担 支払先    49370 630 50000 佐藤    25000 25000 420 鈴木 Sheet2に 支払先 当方負担 先方負担 佐藤 200 520 鈴木 300 530 Sheet1のA2に =IF(E2="",VLOOKUP(F2,Sheet2!$A$2:$C$3,3,FALSE),VLOOKUP(F2,Sheet2!$A$2:$C$3,2,FALSE)) と入れて、A2まで式を複写する。 結果はA2、A3に 520 300 となりました。

osm310
質問者

お礼

ありがとうございました 大変参考になりました

  • shiotan99
  • ベストアンサー率68% (140/203)
回答No.1

こんにちは~ Sheet1 の C列( 相手負担 )に金額が入れば、E列( 当方負担 )は空白、 E列に金額が入れば、C列は空白、という理解でよろしいでしょうか? Sheet1 の A2に =IF(COUNTIF(Sheet2!A:A,F2),INDEX(Sheet2!A:C,MATCH(F2,Sheet2!A:A,0),2+(C2<>"")),"") と入れて( コピー&ペーストして )、必要なだけ下にフィルコピーしてください。

osm310
質問者

お礼

有難うございました 大変参考になりました

関連するQ&A