- ベストアンサー
エクセルの計算式
エクセルの計算式でどこが間違っているか教えて下さい。 E7=P1010200(文字列) G7=180000(数値) H7に次の式を入力しました。 =IF(E7="P*",G7*0.1,0) 答えが18000になると思って入力をしたんですが0になってしまいます。なぜでしょうか。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
それは、条件「E7="P*"」が成立していないからです。 正規表現では確かに「P*」はPで始まる任意の文字列になりますが、この場合は本当に文字列"P*"と評価されています。 たとえば =IF(LEFT(E7,1)="P",G7*0.1,0) ではどうでしょう。 (E7の左から1文字が"P"かどうか)
その他の回答 (5)
- comv
- ベストアンサー率52% (322/612)
ワイルドカード * や ? が使える関数は COUNTIF() SUMIF() MATCH() V/H LOOKUP() SEARCH() データベース関数の条件記載 等で直接の比較演算では使えません 今回の場合、どれを使っても可能だと思いますが 簡単な COUNTIF()を使う例で =IF(COUNTIF(E7,"P*"),G7*0.1,0)
お礼
回答ありがとうございます。色々な情報を頂けて勉強になりました。
- imogasi
- ベストアンサー率27% (4737/17069)
P*なので、「先頭にPが来るもの」と言うことでしょうから=IF(FIND("P",E7)=1,G7*0.1,0) になるでしょう。 「何文字目にでもPがあるなら」なら =IF(FIND("P",E7)>=1,G7*0.1,0) です。
お礼
回答ありがとうございます。これから活用したいと思います。
- Hageoyadi
- ベストアンサー率40% (3145/7860)
=IF(SEARCH("P",E7,1)>0,G7*0.1,"") とか エラー値を出したくないなら、 =IF(ISERROR(FIND("P",E7,1)>0),"",G7*0.1) とか。
お礼
回答ありがとうございます。これから活用したいと思います。
- taknt
- ベストアンサー率19% (1556/7783)
=IF(left(E7,1)="P",G7*0.1,0) としてあげればいいのでは?
お礼
おかげ様で解けました。ありがとうございます。
- kojitti
- ベストアンサー率32% (449/1386)
当然ながら、E7がP*ではないからですよね? *がワイルドカードの意で使用したいのであれば、SEARCH関数を使用しないとだめです。
お礼
それがわからなかったんで質問していたんです。 回答ありがとうございました。
お礼
詳しく説明してくださってありがとうございます。 おかげ様で理解できました。