我正在尝试使用动态数据系列创建图表。图表中的每个系列都来自绝对范围,但只有一定数量的范围可能包含数据,其余系列将为#N/A
。
问题是该图表将所有#N/A
单元格作为值粘贴而不是忽略它们。我通过使用命名的动态范围(即插入>名称>定义)解决了这个问题,但效率极低,因为每个图表都有4个动态系列,我必须制作25个这样的图表。
是否还有其他解决方案允许我为数据系列正常指定范围,但是告诉图表忽略所有“#N / A”或空白单元格?
答案 0 :(得分:26)
通过使用IF语句将不需要的值返回到“”,我遇到了同样的问题,图表可以按照您的描述进行操作。
但是,当我使用#N/A
代替""
时(重要的是,请注意它没有#N/A
而不是"#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)
答案 1 :(得分:19)
当您将图表引用到已定义的范围时,它会绘制该范围内的所有点,将错误和空白解释为空值。
您可以选择将其保留为空(间隙)或将其强制为零值。但这些都没有调整图表系列数据指向的RANGE。从我收集到的,这些都不合适。
如果您隐藏存在#N / A数据的整个行/列,图表应完全忽略这些数据。您可以通过右键单击|手动执行此操作隐藏行,或使用表AutoFilter。我想这就是你想要完成的。
答案 2 :(得分:10)
请注意,在绘制折线图时,使用= NA()(输出#N / A)以避免绘制非现有值仅适用于每个系列的末尾,第一个和最后一个值。任何#N / A在两个其他值之间将被忽略并桥接。
答案 3 :(得分:5)
你是正确的,空格“”或字符串“#N / A”确实被解释为具有excel中的值。您需要使用函数NA()。
答案 4 :(得分:4)
如果您想要散布图的-r
和x
列,但并非其中一列中的所有单元格都填充了有意义的值(即其中一些有{{1}然后,在违规列旁边插入一个新列并输入y
,其中 A2 是违规列中的值。
如果有#DIV/0!
,这将返回=IFERROR(A2, #N/A)
,否则将返回正确值。现在使用新列创建绘图,Excel忽略#N/A
值,不会将它们绘制为零。
重要:不要在公式中输出#DIV/0!
,只输出#N/A
。
答案 5 :(得分:2)
你可以使用函数“= IF(ISERROR(A1); 0; A1)”如果单元格A1包含错误则显示为零,如果不包含错误则显示实际值。
答案 6 :(得分:1)
另一个鲜为人知的解决方案在某些地方具有优点。使用#NULL!不绘制的错误,也不会为绘图创建零点。
因此,您的绘图列填充了以下构造。假设A列中的实际数据,并且绘制的版本在C列中。
= If(Isnumber(A2),A2,A2 A3)
该空间是一个鲜为人知的运算符,用于生成两个单元格地址或范围的交集。如果没有交集,那么它会生成消息#NULL!
包含#NULL的单元格!被删除用于绘图目的。
除了(对于微软),只需要让数学公式以某种方式忽略这些细胞吗?
答案 7 :(得分:1)
这是我发现的,因为我只是将每4列中的3个细胞集中在一起。我的图表有一个合并的单元格,日期是我的x轴。问题:BC26-BE27在我的图表上绘制为ZERO。 enter image description here
我点击图表侧面的过滤器,找到显示数据点所在列的所有列的位置。我取消选中没有值的框。 enter image description here
它对我有用。
答案 8 :(得分: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
答案 9 :(得分:1)
只想把我的2点放在这个问题上......
我有类似的需求,我通过INDEX / MATCH从另一个表中提取数据,由于没有匹配,很难区分真实0值和0值(例如,对于显示的柱状图表12个月内价值的进展以及我们仅在2月份的数据,但剩下的月份数据尚未公布,柱形图在3月到12月的所有地方仍然显示0
我最终要做的是创建新系列,并在图表上将此新系列绘制为折线图,然后我选择不将线条图隐藏起来显示选项中的行,我将数据标签放在顶部,这个新系列的值的公式如下:
= IF(LEN([@ [列1]])= 0,的 NA()下,[@ [列1]])
我使用LEN作为验证因为ISEMPTY / ISBLANK没有工作,因为INDEX / MATCH的结果总是返回一个空白而不是空白,即使我已经放了一个""在IFERROR之后......
在折线图上,误差值NA()使得该值不会显示......所以这对我有用......
我想在没有照片的情况下按照这个程序有点困难,但我希望它能描绘一些图片,如果你有像我这样的类似情况你可以使用解决方法
答案 10 :(得分:0)
我找到了办法。
你可以做一个x,y散点图。它将忽略空记录(即行)
答案 11 :(得分:0)
如果您使用PowerPivot和数据透视图,则会排除不存在的行。
答案 12 :(得分:0)
如果您在图表上使用垂直刻度(使用格式轴)从0.0001(比如说)运行,则不会绘制Excel认为为零的值。图表中的轴仍然看起来像是从零向上运行。
答案 13 :(得分:0)
最好的方法是使用清空
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
答案 14 :(得分:0)
我在使用X / Y图表时遇到了类似的问题,但是还需要计算两组数据的相关函数。
=IF(A1>A2,A3,#N/A)
允许绘制图表,但相关X
& Y
失败。
我解决了这个问题
=IF(A1>A2,A3,FALSE)
FALSE可以使用条件格式或其他技巧removed
答案 15 :(得分:0)
出现完整一行时遇到了同样的问题。
我的数据结尾只有#N / A.
当我将图表类型从堆积线更改为行时,该行的结尾已从图表中删除。
如果#N / A位于数据中间,只有当它在尾随数据中时才会起作用。
答案 16 :(得分:0)
选择栏上方的标签。 格式化数据标签。 而不是选择“VALUE”(unlick)。 从单元格中选择值。选择值。 使用以下语句:if(cellvalue =“”,“”,cellvalue) 其中cellvalue是单元格中的计算结果。
答案 17 :(得分:0)
虽然这是一篇很老的帖子,但是当我在寻找同一问题的解决方案时,我最近遇到了它。虽然上述解决方案确实可以防止图表绘制数据(当源单元格为#N / A或看起来为空白时),但它无法解决图表数据标签本身仍显示零标签的问题。
当我遇到在线发布的解决方案@ https://www.extendoffice.com/documents/excel/2031-excel-hide-zero-data-labels.html
时,我进行了搜索和搜索,几乎放弃了它很有魅力。附件是一个图像,显示了数据(标签)之前显示的方式,图表#1,以及如何使用此提示图#2显示。
答案 18 :(得分:0)
我遇到了同样的问题。
Bar chart
和Stacked Bar chart
之间有区别
Line chart
和Stacked Line chart
之间存在差异。
堆积的那个不会忽略0或空白值,但会根据其他图例显示一个累积值。
只需右键单击图形,单击Change Chart Type
并选择一个非堆叠的图表。
答案 19 :(得分: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)