48

我正在尝试使用动态数据系列创建图表。图表中的每个系列都来自一个绝对范围,但该范围中可能只有一定数量的数据,其余的将是#N/A.

问题是图表将所有#N/A单元格作为值而不是忽略它们。我已经通过使用命名动态范围(即插入>名称>定义)来解决它,但这是非常低效的,因为每个图表都有4个动态系列,我必须制作25个这样的图表。

是否有任何其他解决方案允许我像​​往常一样为数据系列指定范围,但告诉图表忽略所有“#N/A”或空白单元格?

4

20 回答 20

34

通过使用 IF 语句将不需要的值返回给“”,我遇到了同样的问题,并且图表会按照您的描述进行。

但是,当我使用#N/A而不是""(重要,请注意它没有引号,如 in#N/A和 not "#N/A")时,图表忽略了无效数据。我什至尝试输入一个无效的FALSE语句,它的工作原理相同,唯一的区别是#NAME?作为单元格中的错误而不是#N/A. 我将使用一个虚构的 IF 语句来向您展示我的意思:

=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

当您将图表引用到定义的范围时,它会绘制该范围内的所有点,将(为了绘图)错误和空白解释为空值。

#N/A 值为 null 的图表

您可以选择将其保留为空(间隙)或将其强制为零值。但是这些都没有调整图表系列数据指向的范围。据我所知,这些都不合适。

图表隐藏/空单元格选项

如果您隐藏存在 #N/A 数据的整个行/列,图表应完全忽略这些。您可以通过右键单击 | 手动执行此操作。隐藏行,或使用表自动筛选。我认为这是你想要完成的。

具有隐藏源数据行的图表会忽略隐藏数据

于 2013-02-22T01:15:35.443 回答
14

请注意,在绘制折线图时,使用 =NA()(输出 #N/A)来避免绘制不存在的值仅适用于每个系列的结尾、第一个值和最后一个值。其他两个值之间的任何 #N/A 都将被忽略和桥接。

示例图在这里

于 2016-07-26T18:56:27.417 回答
8

您是正确的,空格“”或字符串“#N/A”确实被解释为在 excel 中具有值。您需要使用函数 NA()。

于 2014-01-23T16:12:33.430 回答
6

如果您有要散点图的xand列,但并非其中一列中的所有单元格都填充了有意义的值(即其中一些具有),则在有问题的列旁边插入一个新列并键入,其中A2是违规列中的值。y#DIV/0!=IFERROR(A2, #N/A)

#N/A如果有 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 回答
2

我遇到了同样的问题。

Bar charta和 a是有区别的Stacked Bar chart

Line chart因为 a和 a之间有区别Stacked Line chart

堆叠的,不会忽略 0 或空白值,而是会根据其他图例显示一个累积值。

只需右键单击图表,单击Change Chart Type并选择一个非堆叠图表。

于 2018-12-21T06:12:37.880 回答
1

只是想把我的2cents放在这个问题上......

我有类似的需求,我通过 INDEX/MATCH 从另一个表中提取数据,并且由于不匹配而很难区分真正的 0 值和 0 值(例如,对于显示进度的柱形图) 12 个月的值,我们仅在 2 月,但其余月份的数据尚不可用,柱形图仍显示 0 到 3 月至 12 月的所有地方)

我最终做的是创建一个系列并将这个新系列绘制在图表上作为折线图然后我通过选择不在选项中显示线来隐藏折线图并将数据标签放在顶部,公式这个新系列的值类似于:

=IF(LEN([@[column1]])=0, NA() ,[@[column1]])

我使用 LEN 作为验证,因为 ISEMPTY/ISBLANK 不起作用,因为 INDEX/MATCH 的结果总是返回除空白以外的其他内容,即使我在 IFERROR 之后放了一个“”...

在折线图上,错误值 NA() 使得该值不显示......所以这对我来说很有效......

我想在没有图片的情况下遵循此过程有点困难,但我希望它描绘出某种图片,以便您在遇到类似我的情况时使用解决方法

于 2015-04-27T18:40:25.827 回答
1

还有另一种鲜为人知的解决方案在某些地方有优点。使用#NULL!不绘图且不为绘图创建零点的错误。

因此,您的绘图列充满了以下构造。假设 A 列中的真实数据和绘图版本在 C 列中。

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

该空间是一个鲜为人知的运算符,用于产生两个单元格地址或范围的交集。如果没有交集,则生成消息#NULL!

包含#NULL 的单元格!出于绘图目的而被跳过。

除了(对于微软)只需要让数学方程以某种方式忽略这些单元格?

于 2015-09-06T23:17:25.800 回答
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

这是我发现的,因为我只绘制了每 4 列集中在一起的 3 个单元格。我的图表有一个合并的单元格,日期是我的 x 轴。问题:BC26-BE27 在我的图表上绘制为零。在此处输入图像描述

我单击图表侧面的过滤器,发现它显示了所有列的数据点图表。我取消选中没有值的框。 在此处输入图像描述

它对我有用。

于 2017-03-28T16:04:54.373 回答
0

我在使用 X/Y 图表时遇到了类似的问题,但随后还需要计算两组数据的相关函数。

=IF(A1>A2,A3,#N/A)允许绘制图表,但X&的相关性Y失败。

我解决了这个问题 =IF(A1>A2,A3,FALSE)

FALSE 然后可以removed使用条件格式或其他技巧

于 2013-10-25T05:26:31.903 回答
0

我找到了一种方法。

你可以做一个 x,y 散点图。它将忽略空记录(即行)

于 2014-10-28T03:10:25.227 回答
0

如果您使用 PowerPivot 和 PivotChart,您将排除不存在的行。

于 2014-01-02T14:43:27.713 回答
0

如果您使图表上的垂直刻度(使用格式轴)从 0.0001(例如)开始,则不会绘制 Excel 认为为零的值。图表中的轴看起来仍然像从零向上运行。

于 2013-10-28T04:54:09.333 回答
0

虽然这是一篇旧帖子,但我最近在寻找相同问题的解决方案时遇到了它。虽然上述解决方案确实阻止了图表绘制数据(当源单元格为 #N/A 或看起来空白时),但它并不能解决图表数据标签本身仍显示零标签的问题。

当我遇到在线发布的解决方案@ https://www.extendoffice.com/documents/excel/2031-excel-hide-zero-data-labels.html时,我已经搜索和搜索并且几乎放弃了

它的工作就像一个魅力。附件是一个图像,显示了数据(标签)如何显示之前的示例,图表#1,以及它如何使用此提示图表#2 显示。

在此处输入图像描述

于 2018-03-28T23:04:52.390 回答
0

选择栏上方的标签。格式化数据标签。而不是选择“VALUE”(取消单击)。从单元格中选择值。选择值。使用以下语句: if(cellvalue="","",cellvalue) 其中 cellvalue 是单元格中的计算内容。

于 2018-02-14T15:42:18.580 回答
0

我遇到了同样的问题,出现了整行。

我的数据末尾只有#N/A。

当我将图表类型从堆积线更改为线时,线的末端从图表中删除。

如果 #N/A 位于数据中间,则此方法不起作用,仅当它位于尾随数据中时。

于 2017-09-15T12:58:42.363 回答
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 回答
-1

最好的方法是使用Empty

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 回答