- ベストアンサー
excelのVLOOKUPで、照合後、値を表示
VLOOKUP関数を利用して、商品送付後の入金管理を行いたいと思っています。 送付済(シート1) A列:名前 B列:金額 C列:名前&金額 D列:送付日 E列: F列: 入金済(シート2) A列:名前 B列:金額 C列:名前&金額 D列:回収日 E列:入金日 「名前と金額が検索値と一致したら、送付済(シート1)のE,F列に、回収日と入金日を表示させる」ようにしたいです。 VLOOKUP関数では、二つの値の照合は出来ないとの事でしたので、C列=名前&金額をいれて、C列での照合をしたいと思っています。 照合後に、回収日と入金日を表示させる関数が分かりません。 ※照合後に値が無い場合は、エラーでなく空白で表示させたいです。 よろしくお願いいたしますm(__)m
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
IS関数(「IS~」と言う名称の関数)は =TRUE が無くとも、判定をする事が出来ますから、E2に =IF(ISNA(VLOOKUP($C3,Sheet2!$C:$E,2,0)),"",VLOOKUP($C3,Sheet2!$C:$E,2,0)) F2に =IF(ISNA(VLOOKUP($C2,Sheet2!$C:$E,3,0)),"",VLOOKUP($C2,Sheet2!$C:$E,3,0)) と入力してた後、E2とF2を表の最下部までコピーされると良いと思います。 又は、IS関数を使わずに、E2に =IF(COUNTIF(Sheet2!$C:$E,$C3)>0,VLOOKUP($C3,Sheet2!$C:$E,2,0),"") F2に =IF(COUNTIF(Sheet2!$C:$E,$C3)>0,VLOOKUP($C3,Sheet2!$C:$E,3,0),"") でも良いと思います。 更に、名前と金額が検索値と一致したら、必ずF2に数値が表示されるのですから、F2に入力する数式はそのままとして、E2に入力する数式を =IF(ISNUMBER(F2),VLOOKUP($C3,Sheet2!$C:$E,2,0),"") と変えても良いと思います。
その他の回答 (2)
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 外していたらごめんなさい。 ↓の画像のような感じになっているのでしょうか? そして、Sheet1のC列がSheet2のC列の中にあれば、そのD・E列を表示すれば良い! という解釈での方法です。 Sheet1のE2セルに =IF(COUNTIF(Sheet2!$C$2:$C$1000,$C2),VLOOKUP($C2,Sheet2!$C$2:$E$1000,COLUMN(B1),0),"") という数式を入れ、オートフィルで列方向と行方向にコピーすると 画像のような感じになります。 尚、数式は1000行目まで対応できるようにしていますが、 データ量によって範囲指定の領域はアレンジしてみてください。 以上、参考になれば良いのですが、 的外れなら読み流してくださいね。m(__)m
お礼
大変分かりやすかったです! 表までつけていただいてありがとうございましたm(__)m
- silverfd
- ベストアンサー率57% (204/356)
この方式は商売レベルの実用に耐えないと思いますよ。まず、同じ名前と金額の組合せが2回目に出現しても、それは永遠に照合されず、先に照合でヒットしたデータが表示されます。そもそも、何で同じシートの別列でなく、別シートにするのでしょうか? それはさておき、単に質問に回答するならこうすれば可能です。 E2に「=IF(ISERROR(VLOOKUP($C3,Sheet2!$C:$E,2,0))=TRUE,"",VLOOKUP($C3,Sheet2!$C:$E,2,0))」 F2に「=IF(ISERROR(VLOOKUP($C2,Sheet2!$C:$E,3,0))=TRUE,"",VLOOKUP($C2,Sheet2!$C:$E,3,0))」 これを表の最下部までコピー。 これで、組合せがあって空欄の場合は0が表示され、組合せ自体が無い場合は空欄で表示されます。
補足
大変分かりにくい説明ですみません。。 補足いたしますm(__)m >同じ名前と金額の組合せが2回目に出現しても 名前というのは、数字での表示で送付する時に発行する番号です。 送付番号になりますので、2回出現するという事は絶対にありません。 >何で同じシートの別列でなく、別シートにするのでしょうか? こちらですが、送付明細(送付時)と、入金明細(入金時)を、csvで出力します。 ですので、別シートです。 分かりにくくて申し訳ありません。 よろしくお願いしますm(__)m
お礼
エクセルってすごいですね。 幾通りも関数があるのがびっくりしました(゜o゜) なじみのある、IF(COUNTIF~ を利用しましたm(__)m ありがとうございましたm(__)m