エクセルのブランクを参照してもエラーとならない方法

このQ&Aのポイント
  • エクセルで、ブランク("")となっているセルを参照してもエラーとならない方法をご紹介します。
  • 現在、エクセルでブランク("")となっているセルを他のセルの数式で参照するとエラーが発生してしまいますが、その問題を解決する方法をお伝えします。
  • エクセルでブランク("")となっているセルを参照する際にエラーが発生しない方法についてお教えします。
回答を見る
  • ベストアンサー

エクセル(EXCEL)のブランク "" を参照してもエラーとならない方法

エクセルで、"" となっているセルがあるとします。 (たとえば =IF(a1=0,"",1) という式が入力されていて、a1が実際に0のため""となっている。) このセルを他のセルの中の数式で参照してしもエラーとならないようにする方法はないでしょうか? ただし、=iferror 関数は使用は不可です。 とにかく、"" を参照しても単純にエラーがでないようにしたいのです。 つまり、『何も入力されていないセル 且つ「ゼロでもない」セル』としてエクセルに認識させる方法(←これが知りたいこと)はないでしょうか? 現在抱えている問題の説明が難しいので、わかりにくい質問ですが、 どうか思いつくアイデアをお答くださいませ。

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

  • ベストアンサー
  • A88No8
  • ベストアンサー率52% (834/1602)
回答No.3

 cocoopitさん、こんにちは  質問文でちょっと気になったしまったことがあったので発言させてくださいね。  質問文の中で、、"" を『何も入力されていないセル 且つ「ゼロでもない」セル』と解釈されているようですが、実は"" は『長さ0の文字列』なので、何も入力されていないセルではありません。普通コンピュータでは、プログラムの不具合を防ぐ手段として文字列型のデータと数値型データは同列に扱わないルールで動いています。  エクセルは、親切なので何も入力されていないセルに計算を指定されたら、ゼロという値で対処すると自動的に解釈してくれているだけです。  で、以上を踏まえた上でcocoopitさんが、直面されている問題を知りたいです。 例えば、セルに0が表示されるのを防ぐために "" を指定しているとか..m(__)m

cocoopit
質問者

お礼

質問者です。すみません。上記に追記です。 ※D列、E列の "" の部分を 0 にする。 そして、   ※ D5 で =averageif(D1:D4,"<>0") とする。というアイデアもあると思いますが、D1~D4 の値(即ちB列xC列の答え)がゼロとなることも ありえますので、やはり D列、E列の "" の部分を 0 にすることはできません。(averageifの答えが正しくなくなってしまう) どうぞ、宜しくお願い致します。

cocoopit
質問者

補足

質問者です。ご回答ありがとうございます。質問の仕方が悪く申し訳ありませんでした。 少し長くなりますが、抱えている問題を説明させていただきますので ご高覧いただけましたら嬉しいです。 ●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 が正しく計算できなくなります。 何か良い解決方法ございますでしょうか? ご教示いただけましたら、大変助かります。 どうぞ宜しくお願い致します。  

その他の回答 (6)

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

質問者の例データ 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なんだが、そのセルの値を+加算してくれる。""だけがやってくれないのだ。 ーー 初めから実例を挙げておれば、回答者も悩まなくて済んだ。

cocoopit
質問者

お礼

ありがとうございました。 SUMPRODUCTは知ってますが、 =SUMPRODUCT((B1:B4)*(C1:C4))/4 だと、行数が増えるたびに書き換えないといけないので不便ですね。 これからも、がんばっていろいろ悩んでください。

  • n_na_tto
  • ベストアンサー率70% (75/107)
回答No.6

AVERAGEのほうは今のままでいいと思います。 合計を出すほうを変えてはどうでしょうか? F1: =D1+E1 のところを、 F1: =SUM(D1:E1) としてください。 SUM関数なら空白は無視します。

cocoopit
質問者

お礼

あ、そうか。これで解決しました。 ありがとうございます。深謝!

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

質問を出す質問文章として、 >の数式で参照してしもエラーとならないようにする その参照している数式が、どういう数式(というより関数か?)を書かずして質問が成り立たないと思うが。 引数に空白セルを指定して、エラーになる関数とならない関数があると思うが。 >問題の説明が難しいので ソウであっても最終的に問題にしている関数や、関数の組み合わせはたかが2,3でしょう。 ーー 質問文は長いが、ストレートな聞き方は出来ないですか。 私からすると、関係ないこと、漠然とした表現が多すぎる。 例 単純に >、=iferror 関数は使用は不可です。 回答者は試験を受けているわけではないので、試験問題のような、注文はつけることは無いのでは。 >エクセルで、"" となっているセルがあるとします。 (たとえば =IF(a1=0,"",1) という式が入力されていて、a1が実際に0のため""となっている。) これも関数はセルの値(だけ)を参照するのであって、その値の出来た来歴は問わないので書く必要は無い。 「空白のせる」というだけでよい。 ーーー 参照するほうのセルの式で =IF(A1=””,(自分の思う数値・文字列、本来の メインの数式・関数)にするだけではダメですか。

cocoopit
質問者

お礼

ご回答ありがとうございます。質問が悪く申し訳ありません。 上記で、抱えている問題を改めて詳しくご説明いたしましたので もし宜しければ解決方法ご教示お願い致します。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんばんは。 >=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の表示は出てきません。

cocoopit
質問者

お礼

参考になる情報をお書き下さり、ありがとうございます。 私の質問の書き方が宜しくなかったようですので、 上で、後ほど今かかえている問題の詳細を改めてご説明しようと 思っておりますの。もし宜しければ、そちらもご覧いただいてお答えを頂戴できましたら幸いです。

  • FEX2053
  • ベストアンサー率37% (7987/21354)
回答No.2

セルに何も入ってないとき、Excelは"0"を返します。ですので、 =IF(A1=0,"",IF(A1="","",1)) とか。if文は先に記述している方からチェックを入れますので、 先に調べて逃げてしまうんです。姑息な手段ですが、結構使えます。

cocoopit
質問者

お礼

ご回答ありがとうございます。 アイデア参考になります。 私の質問の仕方が悪かったようでございます。 下で、より詳しく抱えている問題を説明しておりますので 宜しければご回答いただけましたら嬉しいです。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

=IF(LEN(A1)=0,"",式) では如何でしょうか。

cocoopit
質問者

お礼

LEN 関数知りませんでした。今回の問題の解決策には 残念ながらなりませんが、大変勉強になります。ありがとうございます。 私の質問の仕方がよくなかったようです。 下のほうで、改めて詳しくご説明しておりますので もし宜しければ回答いただけましたら嬉しいです。

関連するQ&A

  • エクセルの#value!エラーについて質問します。

    エクセルのヘルプには#value!エラーが返る原因のひとつに ・セル参照、数式または関数が配列定数として入力されている とありますが、これはどのような状態なのでしょうか? 具体的に数式で示してください。 他所でも質問したのですが具体的な答えが返ってこなかったので・・・

  • エクセル(Excel2003)のIF関数について

    Excelの数式初心者です。 IF関数でつまづいたので質問させていただきます。 SHEET2のセルA1に、 SHEET1のセルA1が○だったら1、それ以外だったら0を表示させたいです。 SHEET2のセルA1に、 =IF(SHEET1!A1=○,"1","0") と入れましたが、#NAME! とエラーが出てしまいました。 ○や×は認識してくれないということなのでしょうか? 初歩的な質問かもしれませんが、どなたかご教示いただけますと助かります。 Excel2003を使用しております。 よろしくお願い致します。

  • エクセルとセルの比較について

    エクセルとセルの比較について エクセル2007で二枚のシートを以下のように作成しました。 シート1   A 1   ←全くの未入力の空白セルです 2 3 シート2   A 1   ←未入力で空白セルですが、数式(if関数とISERROR関数)が入っています。 2 3 ここでしたい処理は、二枚のシートをIF関数で調べて正誤チェックをして、相違するセルに×を表示したいです。 ただ、A1セルに  if(シート1A1=シート2A1,"","×")  の数式をいれると、両者は違うセルとして認識してしまいます。 同じ空白セルなのにどうしてでしょうか。 また、この二つのセルはともに空白なので、同じものとして処理する方法はあるのでしょうか。 お願いします。

  • エクセル関数について

    エクセル関数について質問です。 セルA1、セルA3、セルA5のいずれかに入力された値をセルB1に返すことは関数で可能でしょうか? 可能であれば、IFERROR関数と組み合わせ、エラー値が返らないようしたいです。 エクセルバージョンは2007です。 ご教示ください。よろしくお願いします。

  • Excel関数についての質問です。

    Excel関数についての質問です。 エクセルのバージョンは2007を使用しております。 A1 A2 A3 A4 A5 という並びの表で、A5にはA3-A4の答えを表示させたく、 つまり関数 =A3-A4と入力しているのですが、 A3のセルに空白のセルがあった場合には、 A2のセルを使って =A2-A4 更にA2のセルが空白の場合には、 A1のセルを使って =A1-A4 という風に関数を設定したいと考えています。 「参照先のセルが空白の場合に、ほかのセルの数値を使って計算する」 ということだと思うのですが、どのような関数を入力すれば良いか、 ご教授いただけるとありがたいです。 IFERRORを使って設定すれば良いのかと考えたのですが、 =IFERROR(A3-A4,A4-A2) となり、一応答えが出るようなのですが、 その場合、更にA2が空白だった場合にA1を使って計算するようにするにはどうすればよいか?という点がわからず、質問させていただきました。 ご回答、お待ちしております。よろしくお願いいたします。

  • EXCEL2003の循環参照エラーについて

    Excelファイルを開くと 『数式を計算できません。数式のセル参照は計算結果を参照(循環参照)しています。』 とエラー表示されるのですが、 別のPCで同じファイルを開いても、 エラー表示されません。 また、エラー表示されるPCでは、 別のExcelファイルを開いても、同様のエラーが表示されます。 どういった問題が考えられるでしょうか? 使用OSはどちらともWindowsXP Excelは2003です。 よろしくお願いします。

  • エクセルで文字を参照してフラグを立てたい

    下記のようなエクセルで |-------------------| | |  A  |  B  |  C  |  D  | |-|-----------------| |1|     |あああ様|     |     | |-|-----------------| |2|     |     |いいい様|     | |-|-----------------| |3|     |     |     |ううう様| |-------------------| Aの列に(B~Cを参照して)"様"の入っているセルにフラグを立てたいのです。 数式をいれるAの列から数えて1つ右のセルに"様"があれば1を立てたいのです。 例えばA1のセルには1を A2のセルには2を A3のセルには3をという具合です。 if関数とright関数を使えばできそうな気がしますが私には難しいです…。 よろしくお願いします!

  • エクセルで複数セル(約50個のセル)を参照し、合計値を出そうと思ってい

    エクセルで複数セル(約50個のセル)を参照し、合計値を出そうと思っています。 複数セルの中にはエラー値#N/Aも含まれています。 参照元のセルにVLOOKUP関数を埋め込むのも数が多く大変ですし、 合計値セルでISERROR関数を埋め込んだら「数式が長すぎます」というエラーが出ます。 #N/A以外を抽出し、合計値を出す方法はありますでしょうか。 出来ればVBAを使用せず回避できる方法を教えて頂ければ幸いです。

  • エクセル外部リンク参照について

    エクセル外部リンク参照についての質問です。 vlookup関数で、範囲を指定するときに、シート・ファイル名をセルに入力した文字から判別させたいので、INDIRECT関数を使用したのですが、これだと参照元のファイルを閉じるとエラーになってしまい、 また、外部リンクの更新もできません。 外部リンクの更新が可能で、シート・ファイル名はセルに入力された文字を参照し、 vlookup関数のように検索値から値を返せる方法はありますでしょうか。 ※現在入力している数式を添付させて頂きます。

  • エクセル関数のセル参照方法

    エクセル関数のセル参照で、あるセルに入力した数値を、参照するセルの行番号として使いたいのですがどうしたらよいのでしょうか? VBAではそのような方法があったと思うのですが、関数で処理する方法はあるのでしょうか? たとえば、 =SUM(C5:C*) のような関数で「*」を他のセルに入力して参照させることは可能でしょうか? よろしくお願いいたします。

専門家に質問してみよう