エクセルNA関数の使い方とは?

このQ&Aのポイント
  • エクセルのNA関数を使って空白セルのグラフ表示を解消する方法について説明します。
  • NA関数を使うことで、特定の条件を満たすセルを空白にすることができます。
  • NA関数を適用する式やセルの位置に注意しながら、問題を解決していきましょう。
回答を見る
  • ベストアンサー

エクセルNA関数の式について。。

先輩から引き継いだエクセルにグラフを作成したのですが、空白になっているセルのグラフが0を表示してしまい困っています。 ネットでNA関数を使えば解消されると勉強し、他のセルは出来たのですが以下の式が入っているデータだけは#NA表示になりません。 どこの部分にNA()を記入するべきでしょうか? 私にはギブアップです。 詳しい方のお知恵を頂けるとありがたいです。。 エクセルは2007を使っています。 =IF(AND(COUNT(OFFSET(F3,1-K$2,0):F3)<>K$2),"",IF(AND(COUNT(OFFSET(F3,1-K$2,0):F3)=K$2,K2=""),AVERAGE(OFFSET(F3,1-K$2,0):F3),IF(COUNT(K2=1),K2+2/(K$2+1)*(F3-K2)))) よろしくおねがいします。

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

  • ベストアンサー
  • chie65535
  • ベストアンサー率43% (8514/19354)
回答No.1

式を分解してみましょう。 =IF(AND(COUNT(OFFSET(F3,1-K$2,0):F3)<>K$2),"",IF(AND(COUNT(OFFSET(F3,1-K$2,0):F3)=K$2,K2=""),AVERAGE(OFFSET(F3,1-K$2,0):F3),IF(COUNT(K2=1),K2+2/(K$2+1)*(F3-K2)))) 分解すると、以下のようになります。 = IF(  AND(COUNT(OFFSET(F3,1-K$2,0):F3)<>K$2),     判定式  "",                                真の時  IF(                                偽の時   AND(COUNT(OFFSET(F3,1-K$2,0):F3)=K$2,K2=""),   判定式   AVERAGE(OFFSET(F3,1-K$2,0):F3),            真の時   IF(                                 偽の時    COUNT(K2=1),                          判定式    K2+2/(K$2+1)*(F3-K2)                     真の時   )  ) ) 空白を返されたら困るのであれば「""」を「NA()」に変えれば良いでしょう。 あと、後半(3つ目)のIF文で、判定式が偽の時の式が書いてないんですが、大丈夫ですか?

naushikachan
質問者

お礼

こんなに早く回答いただきありがとうございます。 分解すると解り易いんですね参考になります。 ただ困ったことに以前表示されていた値までが#N/Aになってしまいました。。 そのほかのデータには""をNA()にしたら#N/Aを表示したためこのデータにもやってみたのですが今まで出ていた値も全て#N/Aになってしまいました。。 そもそも数式に誤りがあるのかもしれません。 回答をくれたおかげでエクセル嫌いならずに理解を深めたいと思います。 投稿日時 - 2013-09-27 21:55:21 捕捉にお礼を書いてましたすみません。。

naushikachan
質問者

補足

こんなに早く回答いただきありがとうございます。 分解すると解り易いんですね参考になります。 ただ困ったことに以前表示されていた値までが#N/Aになってしまいました。。 そのほかのデータには""をNA()にしたら#N/Aを表示したためこのデータにもやってみたのですが今まで出ていた値も全て#N/Aになってしまいました。。 そもそも数式に誤りがあるのかもしれません。 回答をくれたおかげでエクセル嫌いならずに理解を深めたいと思います。

その他の回答 (2)

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.3

>どこの部分にNA()を記入するべきでしょうか? >私にはギブアップです。 IF関数でセルへ結果を返す値で空欄になっている個所を見つけることです。 =IF(論理式,正のとき,誤のとき) と言う論理を見直してください。 提示の式はIF関数の入れ子になっています。 =IF(論理式,"",IF(論理式,AVERAGE関数,IF(論理式,四則演算))) 問題のセルが空欄("")であれば1番外側のIF文の正として返された値と考えられます。 従って、修正部分は次のようになるでしょう。 =IF(論理式,NA(),IF(論理式,AVERAGE関数,IF(論理式,四則演算))) 1番内側のIF文の論理式が誤のときの値が記載されていませんので、誤のときはFALSEが返ります。 従って、問題のセルの値を確認すれば明白になります。 論理式の結果を個々にチェックしてどのようにすべきかを判断してください。

  • chie65535
  • ベストアンサー率43% (8514/19354)
回答No.2

という訳で、以下のようにすれば良いでしょう。 =IF(AND(COUNT(OFFSET(F3,1-K$2,0):F3)<>K$2),NA(),IF(AND(COUNT(OFFSET(F3,1-K$2,0):F3)=K$2,K2=""),AVERAGE(OFFSET(F3,1-K$2,0):F3),IF(COUNT(K2=1),K2+2/(K$2+1)*(F3-K2),NA())))

関連するQ&A

  • 関数をVBAで知りたい

    300ぐらいのセルに関数で計算をしているのですが、時間がかかって仕方ありません。次の関数をVBAに直して頂けませんか 質問1:表示したいセルはRange("AD98")です =IF(AND(COUNT(OFFSET(AC98,1-AD$8,0):AC98)<>AD$8),"",IF(AND(COUNT(OFFSET(AC98,1-AD$8,0):AC98=AD$8,AD97=""),AVERAGE(OFFSET(AC98,1-AD$8,0):AC98),IF(COUNT(AD97=1),AD97+2/(AD$8+1)*(AC98-AD97)))) 質問2:表示したいセルはRange("AC98")です =IF(AND(COUNT(AA98)=1,COUNT(AB98)=1),AA98-AB98,"") よろしくお願いします

  • エクセルで、空白セルをグラフで非表示にし、かつ、AVERAGEなどの計算でエラーにならないようにするには?

    エクセルで、空白セルをグラフで非表示にし、かつ、AVERAGEなどの計算でエラーにならないようにするには、どのようにしたらよいのでしょうか。 過去の質問を拝見し、  1)空白セルをグラフで非表示→NA()にする  2)空白セルを非計算→""にする は、理解できたのですが、同時に成立せず、困っております。

  • プロットを補完する為に、関数をどう扱うか

    データを入力したシートとグラフを作成するためのシートの2種類で構成しています。 【データのシート】 具体的な数値と簡単な計算式が各セルに入力してあります。 【グラフのシート】 データのシートで計算された数値の一部をそのまま自動表示されるようにしています。 表示された数値を使ってプロットして、グラフを作成しようとしました。 しかしながら、このとき、見かけ上、空白セルが存在するために、0として認識してしまう為に補完設定をしても反映されません。 具体的には、以下の通りです。 【データ】 セルI9に =IF(ISERROR(AVERAGE(D9:H9)),"",AVERAGE(D9:H9)) セルI12に =IF(ISERROR(AVERAGE(D12:H12)),"",AVERAGE(D12:H12)) セルI15に =IF(ISERROR(AVERAGE(D15:H15)),"",AVERAGE(D15:H15)) 以下、同じ規則で続きます。ここで計算された数値をグラフのシートに反映させます。 【グラフ】 現在は、 =データ!I9  =データ!I12  =データ!I15 と表示させています。 この方法で表示された値で、グラフ化したところ、見かけ上、空白のセルの箇所が0として認識されている為に、要素で線を結ぶプロットの補完がされません。 NA()を使えば、良さそうなのですが、うまくいきません。 =IF(=データ!I12=0,NA(),データ!I12)のような式を考えましたが、ダメでした。 何か解決方法があればよろしくお願い致します。

  • 関数の先頭にIFERRORが有る式

    WINDWS7、エクセル2013です。 ウィザードでしか式を作成したことがなく 他人の作成したエクセル内の関数で疑問が有ります。 1. =IFERROR(VLOOKUP(A1,Sheet2!A$1:H$100,3,0),"") と 2. =IF(A1="","",VLOOKUP(A1,Sheet2!A$1:H$100,3,FALSE)) では何が相違するのでしょうか? 最初の1の方は、式の( )内はセルにカーソルを置いて fxをクリックしてVLOOKUPを選び、ウィザードどうりに 進めてできた式のままで、 もしも検索できなかったら空白にしたい為に 前後にIFERRORと""を加えただけで( )内は よく見る普通の式でわかりやすいです。 後の方の2は、何をしたくてこういう式になっているのかわかりません。 同じく 3. =IFERROR(AVERAGE(B2:K2),"") と 4. =IF(ISERROR(AVERAGE(B2:K2)),"",AVERAGE(B2:K2)) では何が相違するのでしょうか? こちらも同様で 最初の3の方は、式の( )内はセルにカーソルを置いて fxをクリックしてAVERAGEを選び、ウィザードどうりに 進めてできた式のままで、 もしも範囲内に値が無ければ空白にしたい為に 前後にIFERRORと""を加えただけで( )内は よく見る普通の式でわかりやすいです。 後の方の4は、何をしたくてこういう式になっているのかわかりません。 よろしくお願いいたします。

  • EXCELのIF関数の入れ子について

    すみませんよろしくお願いします。 EXCELでセル(A1)~(L1)までに不特定の文字列が入力されており、(M1)に「もし(L1)が入力されていたら(L1)の値を表示、もし(L1)がブランクなら(K1)の値を表示、もし(K1)がブランクなら(J1)の値を表示、もし(J1)がブランクなら(I1)の値を表示・・・・」といった具合で関数を作成したいのです。また、(A1)~(L1)のセルで穴あき状態で入力されていた場合は最も(L1)寄りのセルを表示させたいです。 EXCEL2003のIF関数だと、 =IF(L2="",IF(K2="",IF(J2="",IF(I2="",IF(H2="",IF(G2="",IF(F2="",IF(E2="","",E2),F2),G2),H2),I2),J2),K2),L2) で最後の(A1)までの入れ子を作ることができせん。 EXCEL2007を使用すると、 =IF(L2="",IF(K2="",IF(J2="",IF(I2="",IF(H2="",IF(G2="",IF(F2="",IF(E2="",IF(D2="",IF(C2="",IF(B2="",IF(A2="","",A2),B2),C2),D2),E2),F2),G2),H2),I2),J2),K2),L2) と作成できます。 EXCEL2003で作成するいい方法はありますでしょうか? ご指南の程よろしくお願いします。

  • エクセルグラフ NAデータの非表示の方法

    エクセルでデータを作っており、その中でデータのないセルにはNAと表示されるようにしています。 このNAを含めたデータをグラフで表示すると、NA部分がゼロとしてみなされてしまいます。データのNA表示は変えないで(デリートしたり、#N/Aになるように定義しなおしたりしないで)NA部分がグラフで表示できないようにできますか? エクセルのバージョンは2000です。

  • Excelで二つの関数をヒトツの関数に収めたい

    =IF(AND(T$3>=$D9,T$3<$E9),1,"")という式と =IF(AND(T$3>=$F9,T$3<$G9),-1,"")という式をヒトツにまとめたいです。 ちなみにD9は出勤時間、E9は退勤時間、F9は休憩始めの時間、G9は休憩終わりの時間 そしてT3には時刻が入力されており、塗りつぶす事によってグラフになるようになっています。 現在は1つ目の式のみを使い、条件式書式にて「1と等しい時にセルを塗りつぶす」としています。 これに休憩時間の間はグラフを塗りつぶさないという条件をプラスしたいと思っています。 補足としては、他のセルにてCOUNT関数を使っており、その時間に何人が働いているか表示出来るようにしています。 二つ目の式の真の場合の-1に深い意味はありません。 結果、何人働いているか表示出来ればと思っての数字です。 よろしくお願いします。

  • excelの関数(offsetやaddressについて)

    excelの質問です。 現在C4からC8に、SMALL関数を使って、指定範囲中の1番目から5番目までの小ささの値を抽出しています。 そして、B4からB8に、C4からC8の抽出元のセルの6列左にあるセルの値「名前」を抽出しようとしているのですが、うまくできません。 offset関数の"基準"はセルの番地でないといけないようなので、 、値を返すSMALL関数は直接代入できません。 ネットで調べたら、抽出された最大値の番地を返す式 ADDRESS(SUMPRODUCT((MAX(K2:K75)=K2:K75)*ROW(K2:K75)),SUMPRODUCT((MIN(K2:K75)=K2:K75)*COLUMN(K2:K75)),4) を見つけたのですが、これを直接offset関数の"基準"に代入してもなぜかエラーが出てしまいます。 どうしたらうまくできるでしょうか。 全く上記に書いたやり方と違っても構いません。 よろしくお願いします。

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

    =IF(L2="","EDATE(J2,K2)","EDATE(L2,K2)") という数式で L2が空白の場合、J2の日付からK2の月分だけ経過した日付を表示。 空白でない場合、L2の日付からK2の月分だけ経過した日付を表示したいのですが、 セルには直接『EDATE(J2,K2)』という数式が表示されてしまいます。 空白にしたら『EDATE(J2,K2)』、日付を入れたら『EDATE(L2,K2)』になるので一応IF関数は生きてると思うのですが、中で計算をしてくれていません。 解決方法をぜひご教授くださいませんか。

  • エクセル 関数とグラフについて 

    エクセル 関数とグラフについて  <やりたいこと> ・数字が入力されてないセルで#N/A 表示しない ・数字が入力されてないセルのグラフ線を表示しない  | B   |C  | D        | 7|生産数|時間|1台の時間(秒)| 8|100  |  1|     36   | 9| 空  | 空 |    空     | <やったこと> IF(B8=0,NA(),C8*3600/B8) 数字が入力されてないセルのグラフ線が表示されなくなったが#N/Aが表示される。 IF(ISERROR(C8*3600/B8),"",(C8*3600/B8)) #N/Aが表示されないが数字が入力されてないセルのグラフ線が表示されてしまう。 どのようにすれば良いでしょうか? ご指導宜しくお願いします。