• ベストアンサー

エクセルの計算式

エクセルの計算式でどこが間違っているか教えて下さい。 E7=P1010200(文字列) G7=180000(数値) H7に次の式を入力しました。 =IF(E7="P*",G7*0.1,0) 答えが18000になると思って入力をしたんですが0になってしまいます。なぜでしょうか。

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

  • ベストアンサー
  • fiva205c
  • ベストアンサー率43% (234/533)
回答No.3

それは、条件「E7="P*"」が成立していないからです。 正規表現では確かに「P*」はPで始まる任意の文字列になりますが、この場合は本当に文字列"P*"と評価されています。 たとえば =IF(LEFT(E7,1)="P",G7*0.1,0) ではどうでしょう。 (E7の左から1文字が"P"かどうか)

gomarun
質問者

お礼

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

その他の回答 (5)

  • comv
  • ベストアンサー率52% (322/612)
回答No.6

ワイルドカード * や ? が使える関数は  COUNTIF()  SUMIF()  MATCH()  V/H LOOKUP()  SEARCH()  データベース関数の条件記載 等で直接の比較演算では使えません 今回の場合、どれを使っても可能だと思いますが 簡単な COUNTIF()を使う例で =IF(COUNTIF(E7,"P*"),G7*0.1,0)

gomarun
質問者

お礼

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

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.5

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

gomarun
質問者

お礼

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

  • Hageoyadi
  • ベストアンサー率40% (3145/7860)
回答No.4

=IF(SEARCH("P",E7,1)>0,G7*0.1,"") とか エラー値を出したくないなら、 =IF(ISERROR(FIND("P",E7,1)>0),"",G7*0.1) とか。

gomarun
質問者

お礼

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

  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.2

=IF(left(E7,1)="P",G7*0.1,0) としてあげればいいのでは?

gomarun
質問者

お礼

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

  • kojitti
  • ベストアンサー率32% (449/1386)
回答No.1

当然ながら、E7がP*ではないからですよね? *がワイルドカードの意で使用したいのであれば、SEARCH関数を使用しないとだめです。

gomarun
質問者

お礼

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

関連するQ&A