>商品に対して既に単価が決まっている訳ではなくとりあえず見積項目を上げ、品物を見ながら値決めしていこうかなと考えております。のでいちいち数字入力ではなくこれはA、これはCにしようかなと考えながら取らぬ狸の皮算用をもくろんでおります。
そうでしたか、これは失礼致しました。
C列の単価欄にA,B,C,D等の記号が入力されるとしますと、E4セルに入力する関数は次の様なものとなります。
=IF(AND(COUNTIF($G$4:$G$7,$C4)>0,ISNUMBER($D4)),VLOOKUP($C4,$G$4:$H$7,2,FALSE)*$D4,"")
>COUNTIF関数で品名が空白かそうでないか調べていると思われますが、ISBLANK関数でも同じ働きですか?
いいえ、COUNTIF関数とISBLANK関数は全く異なる関数です。
ISBLANK関数は、単一のセルのみを参照し、そのセルが何のデータも関数も入力されていない、空欄のセルである場合には、TRUE(成り立っている)と判定し、何らかのデータや関数が入力されている場合にはFALSE(成り立っていない)と判定する、と言う関数です。
一方、COUNTIF関数は、
COUNTIF(セル範囲, 検索条件)
と言う形式となっていて、指定されているセル範囲を参照して、その中に、検索条件を満たしているセルが何個あるのかを数える関数です。
例えば、私の前回の回答の添付画像の様にデータが入力されている場合、
=COUNTIF($A$3:$G$8,"A")
と言う関数では、A3~G8のセル範囲の中には、「A」と言うデータが存在しているセルは、B7セルとG4セルの2ヶ所ですから、
=COUNTIF($A$3:$G$8,"A")
の計算結果は2(個)と言う数値データとなります。
又、
=COUNTIF($H$2:$H$8,"<10000")
とした場合には、H2~H8のセル範囲の中には、10000未満のデータが存在するセルは、H4、H5、H6ですから、結果は3となります。
又、
=COUNTIF(C3:E8,">"&C5)
とした場合には、C3~E8のセル範囲の中には、C5セルの値である7000よりも大きな数値が存在しているセルは、C4、E4、E5、E6ですから、結果は4となります。
そして、
=IF(AND(COUNTIF($G$4:$G$7,$C4)>0,ISNUMBER($D4)),VLOOKUP($C4,$G$4:$H$7,2,FALSE)*$D4,"")
と言う関数において、もし、G4~G7のセル範囲の中に、C4セルに入力されているデータと、同じデータを持つセルが存在しなかった場合には、
VLOOKUP($C4,$G$4:$H$7,2,FALSE)
の部分は検索範囲内に検索するデータと同じ値を持つセルを、見つける事は出来ませんから、エラーとなります。
エラーが表示されるのは見苦しい事なので、なるべくエラーは出ない様にするのが一般的です。
そこで、COUNTIF関数を、IF関数の判定式として使用しますと、
COUNTIF($G$4:$G$7,$C4)
の部分は、G4~G7のセル範囲に、C4と同じ値を持つセルの個数が判りますから、もし、結果が0よりも大きな値であれば、G4~G7のセル範囲にはC4と同じ値を持つセルが、1個以上存在する事になりますから、VLOOKUP関数の部分がエラーとなる事はありませんし、もし、結果が0であれば、G4~G7のセル範囲にはC4と同じ値を持つセルが存在しない事になりますから、IF関数を使って、VLOOKUP関数の部分の結果ではなく、""と言う値、即ち何も表示しない様にしている訳です。
お礼
早速丁寧な回答を頂きありがとうございます。ちょっと踏み込んだエクセル的な部分になるとまだまだむずかしいですがちょっとずつ読み解いてみます。今回はありがとうございました。