- ベストアンサー
エラーを含んだ離れたセルの計算
A1(セル表示=3)とA3(セル表示=#N/A)の離れたセルの平均値をセルA4に計算する為に 関数の引数で使って数式を作っているのですが、作成中に正しく表示されませんと 表示が出てきて、計算が出来ません。 色々調べてみましたが、何処がおかしいのか判りません。 ご指導お願いします。 #N/Aに対応する為の数式は使っているつもりなのですが・・・・ ちょっとした間違いが原因だと思うのですが・・・・ 入れている式は =AVERAGE(IF(ISNUMBER(A1,A3),A1,A3,""))
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
わかりました。 では、式を4段階に分けます。(補足に合わせて、使うセルはD5とD11の二つとします) [1] :もし、D5とD11が両方数値なら、その2つの平均 [2]:そうではないケースの中で、D5が数値ならD5を表示 [3]:そうでないケースの中で、D11が数値ならD11を表示 [4]:どれにも該当しないならば、両方とも読み取り不能なセル内容と判断できるので、空白にする =IF(AND(ISNUMBER(D5),ISNUMBER(D11)),AVERAGE(D5,D11),IF(ISNUMBER(D5),D5,IF(ISNUMBER(D11),D11,"")))
その他の回答 (4)
- yaritsusozai
- ベストアンサー率59% (50/84)
追記について: 後半部分は不要ですね。 AND(ISNUMBER(x),ISNUMBER(y))という文は、xとyが両方数値だったらOK、それ以外は全てアウト、と判定する式です。 xがエラーでyが数値…× xが数値でyがエラー…× xもyもエラー…× xが空白でyが数値…× xが数値でyが空白…× xもyも空白…× xがエラーでyが空白…× xが空白でyがエラー…× これら全ての判定を、ANDとISNUMBERを繋ぐことで、ひとまとめにして行っています。従って、それ以上なにか付け加える必要はありません。 なので、最初に回答したものが、十分に簡素化された最適な式となります。
補足
yaritsusozaiさん、こんばんは。 私の書き方がまずっかたのかもしれませんが、平均値を求めたいので どちらかが、エラーもしくは空白の時は、平均値が出せない為 もう一方の数値があるデータをそのまま表示させたいと言うことです。 回答内容を参照するならば xがエラーでyが数値・・・y xが数値でyがエラー…x こんな感じにしたいのですが
- yaritsusozai
- ベストアンサー率59% (50/84)
ISNUMBERを使うのであれば、 =IF(AND(ISNUMBER(A1),ISNUMBER(A3)),AVERAGE(A1,A3),"") A1かA3のどちらか、またはその両方が、エラー・空欄・文字列のいずれかの時に空白となります。 Excelの数式は、いろいろな方法で同じ結果を得ることが出来ます。上記以外の正解もたくさんありますが、 エラーの時どうなるか? 空欄の時どうなるか? 数値入力セルに文字が入力された時にどうなるか? という3つのパターン全てフォロー出来るかどうかを確認しながら数式を組むと、良い結果が得られると思います。
補足
yaritsusozaiさん、こんにちは。 A1とA3の値に関しては、両方数値の時もあれば、両方N/Aの時、片側どちらかがN/A時と様々です。 自分の作れる数式で対応するのなら、下記の様のパターンを全て折込、対応するしかないのかな?って所です。 もっと、簡素化できるようでしたら、ご指導お願いします。 =IF(AND(ISNUMBER(D5),ISNUMBER(D11)),AVERAGE(D5,D11),IF(AND(ISNUMBER(D5),NOT(ISNUMBER(D11))),D5,IF(AND(NOT(ISNUMBER(D5)),ISNUMBER(D11)),D11,"")))
- mp20palpunte
- ベストアンサー率49% (258/523)
ISNUMBERで対象とすることができるのは、1セルだけのようです。 ISNUMBER(A1,A3)←ふたつ入れられない N/A をどう扱いたいのでしょうか? 0扱いで、/2 空白扱いで、/1 0扱いでよければ、 =AVERAGE((IF(ISNUMBER(A1),A1,"")),(IF(ISNUMBER(A3),A3,"0"))) で計算はできました。 /2扱いなので、1.5になります。 もうちょっと調べれば、空白のものも作れる気がしますが、 最終計算側でエラーチェックしようとすると、1セル内で、IFにIFを入れ込んだ複雑な式になっていってしまいます。 なのでA1、A3側で、エラー処理を入れてしまった方が楽な気がします。 A1、A3を、 =IFERROR(計算式,"") で作ってみてください。 ※IFERRORは、2007以上の関数みたいです。
補足
mp20palpunteさん、こんにちは。 N/Aの扱いは空白です。 A1とA3の値に関しては、両方数値の時もあれば、両方N/Aの時、片側どちらかがN/A時と 様々です。 以前はA1,A3側でエラー処理を行なっており、その時は問題はなかったのですが ここでエラー処理が出来れば簡単だと思ったので、お聞きしました。 IFERRORに関しては2003なので使用できません。 なにか、よいアドバイスがあれば、ご指導お願います。
- Cupper-2
- ベストアンサー率29% (1342/4565)
ISNUMBER関数に渡している引数が多いような気がするんですけど、自分の気のせいでしょうか。
お礼
yaritsusozaiさん、こんばんは。 教えて頂いた数式で対応できました。 私が、考えた数式より短く、ありがたいかぎりです。 私の考えた方は判り切っている条件に対し、あえてNOTを入れている為 数式が長くなっていましたね・・・ ご指導、ありがとうございした。