48

動的データ系列を使用してグラフを作成しようとしています。グラフの各系列は絶対範囲からのものですが、その範囲の特定の量だけがデータを持っている可能性があり、残りはになります#N/A

問題は、チャートがすべての#N/Aセルを無視するのではなく、値として貼り付けることです。名前付きのダイナミックレンジ(つまり、[挿入]>[名前]>[定義])を使用して回避しましたが、各グラフには4つのダイナミックシリーズがあり、これらのグラフを25個作成する必要があるため、非常に非効率的です。

データ系列の範囲を通常どおり指定できるが、すべての「#N / A」または空白のセルを無視するようにグラフに指示する他の解決策はありますか?

4

20 に答える 20

34

私は IF ステートメントを使用して不要な値を "" に返すことで同じ問題を抱えていましたが、チャートはあなたが説明したように動作します。

ただし、#N/A代わりに(重要なのは、 inと not""のように引用符がないことに注意してください) を使用すると、チャートは無効なデータを無視しました。無効なステートメントを入れてみましたが、同じように機能しました。唯一の違いは、の代わりにセル内のエラーとして返されました。私が何を意味するかを示すために、架空の IF ステートメントを使用します。#N/A"#N/A"FALSE#NAME?#N/A

=IF(A1>A2,A3,"")  
---> Returned "" into cell when statement is FALSE and plotted on chart 
     (this is unwanted as you described)

=IF(A1>A2,A3,"#N/A")  
---> Returned #N/A as text when statement is FALSE and plotted on chart 
     (this is also unwanted as you described)

=IF(A1>A2,A3,#N/A)  
---> Returned #N/A as Error when statement is FALSE and does not plot on chart (Ideal)

=IF(A1>A2,A3,a)  
---> Returned #NAME? as Error when statement is FALSE and does not plot on chart 
    (Ideal, and this is because any letter without quotations is not a valid statement)
于 2013-05-16T21:37:08.080 に答える
21

グラフを定義済みの範囲に参照すると、その範囲内のすべてのポイントがプロットされ、(プロットのために) エラーと空白が null 値として解釈されます。

#N/A 値が null のグラフ

これをヌル (ギャップ) のままにするか、ゼロ値にするかを選択できます。しかし、これらのいずれも、チャート シリーズ データが指している RANGE のサイズを変更しません。私が集めたものからすると、どちらも適切ではありません。

グラフの非表示/空のセル オプション

#N/A データが存在する行/列全体を非表示にすると、グラフはこれらを完全に無視する必要があります。これは、右クリック | で手動で行うことができます。行を非表示にするか、テーブルのオートフィルターを使用します。これがあなたが達成したいことだと思います。

非表示のソース データ行を含むグラフは、非表示のデータを無視します

于 2013-02-22T01:15:35.443 に答える
8

空白 "" または文字列 "#N/A" は、実際には Excel で値を持つと解釈されます。関数 NA() を使用する必要があります。

于 2014-01-23T16:12:33.430 に答える
6

散布図を作成したいxand列があるが、いずれかの列のすべてのセルに意味のある値が入力されていない場合 (つまり、一部のセルに が含まれている場合)、問題のある列の隣に新しい列を挿入し、 と入力します。A2は問題のある列の値です。y#DIV/0!=IFERROR(A2, #N/A)

これは#N/A、ある場合#DIV/0!は戻り、それ以外の場合は適切な値を返します。新しい列でプロットを作成すると、Excel は#N/A値を無視し、ゼロとしてプロットしません。

重要"#N/A":数式で出力しないでください。出力するだけ#N/Aです。

于 2016-05-02T15:33:36.370 に答える
2

関数"=IF(ISERROR(A1); 0; A1)"を使用できます。これにより、セルA1にエラーが含まれている場合はゼロが表示され、含まれていない場合は実際の値が表示されます。

于 2013-02-22T16:47:55.733 に答える
1

解決策の 1 つは、チャート/グラフに非表示の行を表示しないことです。

この機能を次のようにテストできます: 1) 行番号を右クリック 2) 非表示をクリックします。

自動的に行うための簡単なコードは次のとおりです。

For Each r In worksheet.Range("A1:A200")
   If r.Value = "" Then 
      r.EntireRow.Hidden = True 
   Else: 
      r.EntireRow.Hidden = False
Next
于 2015-08-28T08:33:30.163 に答える
1

いくつかの場所でメリットがある、あまり知られていない別のソリューションがあります。#NULL を使用してください。プロットせず、プロットのゼロ点を作成しないエラー。

したがって、プロット列は次の構成で埋められます。列 A に実際のデータがあり、プロットされたバージョンが列 C にあると仮定します。

=If(Isnumber(A2),A2,A2 A3)

そのスペースは、2 つのセル アドレスまたはセル範囲の交差を生成するあまり知られていない演算子です。交差がない場合、メッセージ #NULL! が生成されます。

#NULL! を含むセル プロットのためにスキップされます。

さておき(マイクロソフトの場合)、そのようなセルを何らかの形で無視するための数式を取得する必要がありますか?

于 2015-09-06T23:17:25.800 に答える
0

グラフの垂直スケールを (フォーマット軸を使用して) 0.0001 (たとえば) から実行する場合、Excel がゼロと見なす値はプロットされません。チャートの軸は、ゼロから上に向かって伸びているように見えます。

于 2013-10-28T04:54:09.333 に答える
0

X/Y チャートを使用して同様の問題が発生しましたが、2 つのデータ セットの相関関数を計算する必要もありました。

=IF(A1>A2,A3,#N/A)チャートをプロットできますが、X&の相関はY失敗します。

私はこれを解決しました =IF(A1>A2,A3,FALSE)

FALSE は、removed条件付き書式設定またはその他のトリックを使用できます。

于 2013-10-25T05:26:31.903 に答える
0

PowerPivot と PivotChart を使用すると、存在しない行が除外されます。

于 2014-01-02T14:43:27.713 に答える
0

次の解決策を見つけました。

軸の時間枠に含めるべきではないすべての日付系列セルに が含まれている場合、Excel チャートは正しい軸の端に自動的に調整されます""。したがって、ヘルパー列を作成し、日付シリーズのヘルパー列セルに次のように書き込むことができます。

Helper Column Datecell = If( iserror (ValueCell);""; Datecell)

一方、特定の時間枠に合わせてチャートのサイズを変更したい場合は、ヘルパー列の日付系列セルに次のように書き込むことができます。

Helper Column Datecell = IF(  OR(ISERROR(ValueCell); DateCell>DateInput)   ;"";DateCell)

DateInput は、チャートのサイズを変更する日付を入力するセルです。


ここに別のトピックがあります:

それに関して、値シリーズを与える値シリーズセルにヘルパー列を作成すると、NA() Error値シリーズもシリーズに調整されます。指定された入力セルに依存する値シリーズセルを作成することもできます。これも必要だと思います。

Helper Column Value Cell: if( condition that date cell is too big or bigger than a given input cell; NA(); ValueCell)
于 2021-07-27T09:38:19.743 に答える
0

フルラインが表示されるという同じ問題がありました。

私のデータの最後には #N/A しかありませんでした。

チャートの種類を積み上げ線から折れ線に変更すると、折れ線の端がチャートから削除されました。

これは、#N/A がデータの途中にある場合は機能せず、末尾のデータにある場合にのみ機能しました。

于 2017-09-15T12:58:42.363 に答える
-1

最良の方法は空を使用することです

Dim i as Integer
For i = 1 to 1000
    If CPT_DB.Cells(i, 1) > 100 Then
       CPT_DB.Cells(i, 2) = CPT_DB.Cells(i, 1)
    Else
       CPT_DB.Cells(i, 2) = Empty //**********************
    End If
Next i
于 2016-12-16T19:35:20.593 に答える