• ベストアンサー

エクセル関数 IF関数・OR関数・ISNA関数

いつもお世話になります。 IF()と OR()と ISNA()を組み合わせて行数を返したいのですが、 セルの値が 0 ではない もしくは #N/A なら行数を、そうでなければスペースを返したいのです。 A列に関数が入っており、数値か#N/Aが返されています。 B2セルに、 =IF(OR(A2<>0,ISNA(A2)),ROW(),"") と入力しB列最下行までオートフィルしたら、 A列が0の場合は行数が返りましたが、#N/Aの場合、、#N/Aと返され行数が返りません。 どこに問題があるか、わかる方教えてください。よろしくお願いします。

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

  • ベストアンサー
  • emaxemax
  • ベストアンサー率35% (44/124)
回答No.1

ORでくくると、エラー値の場合、A2<>0が判定できないので =IF(ISNA(A2),ROW(),IF(A2<>0,ROW(),"")) と分けたらどうでしょう?

WindsorAvenue
質問者

お礼

返信ありがとうございます。 教えて頂いた方法でできました。 orでくくる場合、エラー値は使えないのですね。 勉強になりました。

その他の回答 (1)

回答No.2

「A2<>0」などのように、セルの値を評価した時、値が#N/A!になっていると、式全体が「#N/A!」になります。 なので =IF(ISNA(A2) , A2を含まない式 , 式) のように、N/Aのみ先に判断しないといけません。 なので、質問者さんの希望通りにするには =IF(ISNA(A2) , ROW() , IF(A2<>0,ROW(),"")) と書く必要があります。

WindsorAvenue
質問者

お礼

ありがあとうございます。 教えて頂いた方法でできました。 そうなんですね。勉強になりました。

関連するQ&A