• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:表に合致しない場合、エラーメッセージを表示したい。 )

日付とポイントの表を作成する際に、例外が発生した場合の詳細を記入する方法について教えてください

このQ&Aのポイント
  • 質問者は、日付とポイントの表を作成する際に、例外が発生した場合の詳細を記入する方法を知りたいと述べています。
  • 具体的には、ポイント対象外の人物にポイントがついてしまった時に、詳細の行に「理由は?」というメッセージを表示し、その後調査した結果を上書き入力する方法を知りたいとしています。
  • 質問者は、「IF関数で簡単にできる方法はあるか」とも尋ねています。

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

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

回答No1です。 =IF(OR(C2="",D2=""),"",IF(VLOOKUP(C2,Sheet2!$A:$B,2,FALSE)<>D2,"理由は?","")) 式の意味ですがシート1のC2セル(人)やD2セル(ポイント)が空であれば空のセルにしなさい。そうでない場合にはC2のデータをシート2のA列で探し、該当する行の2列目(ここではB列)のデータ(つまりポイントのデータ)とシート1のD2のデータと比較して、それぞれの値が違っていたら(<>は違っていることの意味です)、「理由は?」と表示しなさい。違っていないとき、すなわち一致しているときは空のセルにしなさい。との意味になります。 試験されてエラーが出たケースがあるとのことですが、それはおそらくC2のデータがシート2のA列にないからでしょう。あるいはシート1での名前とシート2での名前に僅かの違いがあるからでしょう。例えば片方ではスペースが無いのに一方ではスペースが入っているなどでもエラーになってしまいます。 このようなエラーを表示させないようにするのでしたら、式を次のように改良することが必要でしょう。 =IF(OR(C2="",D2=""),"",IF(COUNTIF(Sheet2!A:A,C2)=0,"一致する名前がありません",IF(VLOOKUP(C2,Sheet2!$A:$B,2,FALSE)<>D2,"理由は?",""))) この式ではC2のデータがシート2のA列にない場合には「一致する名前がありません」と表示されます。

termozet
質問者

お礼

なるほど!ものすごくわかりやすい回答ありがとうございました!

その他の回答 (1)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

例えばシート1に表を作るとしてA1セルに日付、B1セルに技、C1セルに人、D1セルにポイント、E1セルにコメントの文字がそれぞれあり、データは2行目から下方に有るとします。 人とポイントの関係は例えばシート2のA列に人が、B列にポイントがそれぞれ入力されているとします。 そこでシート1のE2セルに次の式を入力して下方にオートフィルドラッグすることで、人とポイントの関係がシート2での関係と違っていればE列に「理由は」との表示がされます。 =IF(OR(C2="",D2=""),"",IF(VLOOKUP(C2,Sheet2!$A:$B,2,FALSE)<>D2,"理由は?","")) 問題はコメントの入るセルですからコメントが入れば式が消されてしまいます。ポイントの修正などが行われた場合には式が消えた状態では意味が無いことになりますね。別の列を使って、例えばG2セルに上記の式を入力して下方にオートフィルドラッグして使用するのがよいかもしれませんね。

termozet
質問者

お礼

さっそく実践してみました!基本的にはこれでOKなのですが、どういうわけか入力フォームの最後の行だけエラーになってしまいました。今日、早速本番データでテストしてみたいとおもいます。 ちなみに、VLOOKUPの前後の数式の意味も知りたいのですが、よろしければ解説もおねがいします。

関連するQ&A