- ベストアンサー
エクセルのブランクを参照してもエラーとならない方法
- エクセルで、ブランク("")となっているセルを参照してもエラーとならない方法をご紹介します。
- 現在、エクセルでブランク("")となっているセルを他のセルの数式で参照するとエラーが発生してしまいますが、その問題を解決する方法をお伝えします。
- エクセルでブランク("")となっているセルを参照する際にエラーが発生しない方法についてお教えします。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
cocoopitさん、こんにちは 質問文でちょっと気になったしまったことがあったので発言させてくださいね。 質問文の中で、、"" を『何も入力されていないセル 且つ「ゼロでもない」セル』と解釈されているようですが、実は"" は『長さ0の文字列』なので、何も入力されていないセルではありません。普通コンピュータでは、プログラムの不具合を防ぐ手段として文字列型のデータと数値型データは同列に扱わないルールで動いています。 エクセルは、親切なので何も入力されていないセルに計算を指定されたら、ゼロという値で対処すると自動的に解釈してくれているだけです。 で、以上を踏まえた上でcocoopitさんが、直面されている問題を知りたいです。 例えば、セルに0が表示されるのを防ぐために "" を指定しているとか..m(__)m
その他の回答 (6)
- imogasi
- ベストアンサー率27% (4737/17069)
質問者の例データ A-F列 A列 B列 C列 D列 E列 F列 男 5 10 50 50 女 4 10 40 40 男 3 10 30 30 女 7 10 70 70 40 55 ーーーー 結論 ? F列は、F1は=SUM(D1,E1)を入れて、下方向に複写。 結果 上記のF列 ーー F列合計 =SUM(F1:F4) 190 平均 =190/4 47.5 ---- 御礼で言っている、AVERAGEIF関数は2003まではない. 2007にはある。質問にはバージョン番号も書いてない。 ーーー =SUMPRODUCT((B1:B4)*(C1:C4))/4 で一発で出る。SUMPRODUCT関数を知らないために回りくどい方法をやったのだろう。 ーー 確かに、+演算では (数値のセル)+(数式・関数で””を設定したセル)は#VALUEになる。このことを質問では問題にしていたんだね) SUM関数の方が、適当に加算力は強いようです。 1+全角1、1+””、1+TRUEとかも計算する。 入力なしのセルも関数で””を設定したセルも、=IF(A5="",0,1) のように捕まえられるのに、+演算では扱いが異なる。 上記実例のE1セルについて=TYPE(E1)は2になり、文字列なんです。 全角数字もTypeは2なんだが、そのセルの値を+加算してくれる。""だけがやってくれないのだ。 ーー 初めから実例を挙げておれば、回答者も悩まなくて済んだ。
お礼
ありがとうございました。 SUMPRODUCTは知ってますが、 =SUMPRODUCT((B1:B4)*(C1:C4))/4 だと、行数が増えるたびに書き換えないといけないので不便ですね。 これからも、がんばっていろいろ悩んでください。
- n_na_tto
- ベストアンサー率70% (75/107)
AVERAGEのほうは今のままでいいと思います。 合計を出すほうを変えてはどうでしょうか? F1: =D1+E1 のところを、 F1: =SUM(D1:E1) としてください。 SUM関数なら空白は無視します。
お礼
あ、そうか。これで解決しました。 ありがとうございます。深謝!
- imogasi
- ベストアンサー率27% (4737/17069)
質問を出す質問文章として、 >の数式で参照してしもエラーとならないようにする その参照している数式が、どういう数式(というより関数か?)を書かずして質問が成り立たないと思うが。 引数に空白セルを指定して、エラーになる関数とならない関数があると思うが。 >問題の説明が難しいので ソウであっても最終的に問題にしている関数や、関数の組み合わせはたかが2,3でしょう。 ーー 質問文は長いが、ストレートな聞き方は出来ないですか。 私からすると、関係ないこと、漠然とした表現が多すぎる。 例 単純に >、=iferror 関数は使用は不可です。 回答者は試験を受けているわけではないので、試験問題のような、注文はつけることは無いのでは。 >エクセルで、"" となっているセルがあるとします。 (たとえば =IF(a1=0,"",1) という式が入力されていて、a1が実際に0のため""となっている。) これも関数はセルの値(だけ)を参照するのであって、その値の出来た来歴は問わないので書く必要は無い。 「空白のせる」というだけでよい。 ーーー 参照するほうのセルの式で =IF(A1=””,(自分の思う数値・文字列、本来の メインの数式・関数)にするだけではダメですか。
お礼
ご回答ありがとうございます。質問が悪く申し訳ありません。 上記で、抱えている問題を改めて詳しくご説明いたしましたので もし宜しければ解決方法ご教示お願い致します。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 >=iferror 関数は使用は不可です。 使用不可とか、そういう関数はないのでは? ただ、ISERROR()という考え方は、私は悪くはないと思います。そういう場合もありますが、もし、それが悪いというなら、その根拠を示してほしいものです。回答者は、教科書の問題のように、条件付きの問題を解く必要性はないと思います。 説明は、別に、その背景の説明を回答者は求めているのではなく、その位置関係が分からないと、結局のところうやむやになり易いですね。「("")長さ0の文字列」と、Empty の空とは違います。Empty は、「0」ではありません。数式に入れると初めて、「0」と扱われます。 回答者が示すのは、この種の回答は、アイデアではなく、ズバリ「解答」以外の何ものでもないように思います。そこで必要になるのは、位置関係だと思います。 A1 B1 =IF(A1=0,"",1) このB1を参照するための式ということでは? 例えば、C1 には、以下のような式が必要になります。 =IF(ISTEXT(B1),0,B1) または、 =IF(B1="",0,B1) なお、勘違いされている方がいるかもしれませんが、Excelというか、初期の表計算ソフトから、列の数値型と文字型の混在は認められています。だから、スプレッドシートたる所以があります。スプレッドシートとは、帳簿という意味を持っていて、初期の開発者が、文字列を入れても、合計(SUM関数)を使えるように考えました。 「0」を表示しないなら、書式で、「#,##0;-#,##0;」とすれば、0が入っていても、0の表示は出てきません。
お礼
参考になる情報をお書き下さり、ありがとうございます。 私の質問の書き方が宜しくなかったようですので、 上で、後ほど今かかえている問題の詳細を改めてご説明しようと 思っておりますの。もし宜しければ、そちらもご覧いただいてお答えを頂戴できましたら幸いです。
- FEX2053
- ベストアンサー率37% (7991/21371)
セルに何も入ってないとき、Excelは"0"を返します。ですので、 =IF(A1=0,"",IF(A1="","",1)) とか。if文は先に記述している方からチェックを入れますので、 先に調べて逃げてしまうんです。姑息な手段ですが、結構使えます。
お礼
ご回答ありがとうございます。 アイデア参考になります。 私の質問の仕方が悪かったようでございます。 下で、より詳しく抱えている問題を説明しておりますので 宜しければご回答いただけましたら嬉しいです。
- hallo-2007
- ベストアンサー率41% (888/2115)
=IF(LEN(A1)=0,"",式) では如何でしょうか。
お礼
LEN 関数知りませんでした。今回の問題の解決策には 残念ながらなりませんが、大変勉強になります。ありがとうございます。 私の質問の仕方がよくなかったようです。 下のほうで、改めて詳しくご説明しておりますので もし宜しければ回答いただけましたら嬉しいです。
お礼
質問者です。すみません。上記に追記です。 ※D列、E列の "" の部分を 0 にする。 そして、 ※ D5 で =averageif(D1:D4,"<>0") とする。というアイデアもあると思いますが、D1~D4 の値(即ちB列xC列の答え)がゼロとなることも ありえますので、やはり D列、E列の "" の部分を 0 にすることはできません。(averageifの答えが正しくなくなってしまう) どうぞ、宜しくお願い致します。
補足
質問者です。ご回答ありがとうございます。質問の仕方が悪く申し訳ありませんでした。 少し長くなりますが、抱えている問題を説明させていただきますので ご高覧いただけましたら嬉しいです。 ●A列は以下のようにテキストが入力されています。 A1:男 A2:女 A3:男 A4:女 ●B列 (以下の数値が入力されています) B1:5 B2:4 B3:3 B4:7 ●C列(以下の数値が入力されています) C1:10 C2:10 C3:10 C4:10 ●D列(以下数式が入力されています) C1:=IF(A1="男",B1*C1,"") C2:=IF(A2="男",B2*C2,"") C3:=IF(A3="男",B3*C3,"") C4:=IF(A4="男",B4*C4,"") ●E列(以下数式が入力されています) E1:=IF(A1="女",B1*C1,"") E2:=IF(A2="女",B2*C2,"") E3:=IF(A3="女",B3*C3,"") E4:=IF(A4="女",B4*C4,"") ●D5 には =AVERAGE(D1:D4) と入力してD1~D4 の平均を求めています。 ●E5には =AVERAGE(E1:E4) と入力してE1~E4 の平均を求めています。 そして、 ●F列に以下を入力して、D列とE列の合計を出そうとすると、エラーとなってしまうというのが、現在抱えている問題です。 F1: =D1+E1 F2: =D2+E2 F3: =D3+E3 F4: =D4+E4 ※D列、E列の "" の部分を 0 にすればエラーはなくなりま すが、そうするとD5、E5 でaverage が正しく計算できなくなります。 何か良い解決方法ございますでしょうか? ご教示いただけましたら、大変助かります。 どうぞ宜しくお願い致します。