dポイントプレゼントキャンペーン実施中!

エクセルの計算式でどこが間違っているか教えて下さい。

E7=P1010200(文字列)
G7=180000(数値)

H7に次の式を入力しました。
=IF(E7="P*",G7*0.1,0)

答えが18000になると思って入力をしたんですが0になってしまいます。なぜでしょうか。

A 回答 (6件)

それは、条件「E7="P*"」が成立していないからです。


正規表現では確かに「P*」はPで始まる任意の文字列になりますが、この場合は本当に文字列"P*"と評価されています。

たとえば
=IF(LEFT(E7,1)="P",G7*0.1,0)
ではどうでしょう。
(E7の左から1文字が"P"かどうか)
    • good
    • 0
この回答へのお礼

詳しく説明してくださってありがとうございます。
おかげ様で理解できました。

お礼日時:2003/08/31 11:27

ワイルドカード * や ? が使える関数は



 COUNTIF()
 SUMIF()
 MATCH()
 V/H LOOKUP()
 SEARCH()
 データベース関数の条件記載

等で直接の比較演算では使えません

今回の場合、どれを使っても可能だと思いますが
簡単な COUNTIF()を使う例で

=IF(COUNTIF(E7,"P*"),G7*0.1,0)
    • good
    • 0
この回答へのお礼

回答ありがとうございます。色々な情報を頂けて勉強になりました。

お礼日時:2003/08/31 11:32

P*なので、「先頭にPが来るもの」と言うことでしょうから=IF(FIND("P",E7)=1,G7*0.1,0)


になるでしょう。

「何文字目にでもPがあるなら」なら
=IF(FIND("P",E7)>=1,G7*0.1,0)
です。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。これから活用したいと思います。

お礼日時:2003/08/31 11:30

=IF(SEARCH("P",E7,1)>0,G7*0.1,"")


とか
エラー値を出したくないなら、
=IF(ISERROR(FIND("P",E7,1)>0),"",G7*0.1)
とか。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。これから活用したいと思います。

お礼日時:2003/08/31 11:29

=IF(left(E7,1)="P",G7*0.1,0)



としてあげればいいのでは?
    • good
    • 0
この回答へのお礼

おかげ様で解けました。ありがとうございます。

お礼日時:2003/08/31 11:26

当然ながら、E7がP*ではないからですよね?


*がワイルドカードの意で使用したいのであれば、SEARCH関数を使用しないとだめです。
    • good
    • 0
この回答へのお礼

それがわからなかったんで質問していたんです。
回答ありがとうございました。

お礼日時:2003/08/31 11:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!