Excel动态范围偏移公式排除#n / a

时间:2017-04-01 22:32:53

标签: excel dynamic excel-formula offset

我的数据会根据切片器而变化,我无法找出正确的偏移公式,只选择有效的数据值,换句话说,排除任何#N / A值。数据看起来像这样:

|Column A   |  Column B   |Column C|
|----------------------------------|
|Jan        |   #N/A      |    #N/A|
|Feb        |   4         |     40 |
|Mar        |   5         |    38  |
|Apr        |   12        |     10 |
|May        |   #N/A      |    #N/A|
|Jun        |   #N/A      |    #N/A|

我希望偏移范围只选择2月/ 3月/ 4月行。但是如果数据发生变化是因为我点击了不同的过滤器(例如下面的例子),我希望它仍然只选择非错误数据(行Jan / Feb / Mar / Apr):

|Column A   |  Column B  | Column C|
|----------------------------------|
|Jan        |   30       |      60 |
|Feb        |   8        |      83 |
|Mar        |   53       |      14 |
|Apr        |   11       |      41 |
|May        |   #N/A     |     #N/A|
|Jun        |   #N/A     |     #N/A|

请帮忙!谢谢。

2 个答案:

答案 0 :(得分:1)

偏移功能只能选择单个范围的单元格,但这仍然适合您的需要。沿x轴的月份图表应包括所有月份,即使没有值。偏移功能只会使图表在最早的月份开始有一个值,并在最近一个月用一个值结束。没有值的任何月份之间只会在图表上绘制任何内容。

要在图表中使用命名范围,您必须为每个单独的系列命名。您无法为整个图表源数据范围使用动态范围。

定义以下三个命名范围以供在图表中使用。每列A,B和C都有一个命名范围。每个命名范围都会查看B列以确定要包含的行:

个月:

=IF(COUNT(Sheet1!$B$2:$B$7)=0,Sheet1!$A$2,OFFSET(Sheet1!$A$1,MIN(IF(ISERROR(Sheet1!$B$2:$B$7),"",ROW(Sheet1!$B$2:$B$7)))-1,0,MAX(IF(ISERROR(Sheet1!$B$2:$B$7),"",ROW(Sheet1!$B$2:$B$7)))-MIN(IF(ISERROR(Sheet1!$B$2:$B$7),"",ROW(Sheet1!$B$2:$B$7)))+1,1))

系列1:

=IF(COUNT(Sheet1!$B$2:$B$7)=0,Sheet1!$B$2,OFFSET(Sheet1!$B$1,MIN(IF(ISERROR(Sheet1!$B$2:$B$7),"",ROW(Sheet1!$B$2:$B$7)))-1,0,MAX(IF(ISERROR(Sheet1!$B$2:$B$7),"",ROW(Sheet1!$B$2:$B$7)))-MIN(IF(ISERROR(Sheet1!$B$2:$B$7),"",ROW(Sheet1!$B$2:$B$7)))+1,1))

系列2:

=IF(COUNT(Sheet1!$B$2:$B$7)=0,Sheet1!$C$2,OFFSET(Sheet1!$C$1,MIN(IF(ISERROR(Sheet1!$B$2:$B$7),"",ROW(Sheet1!$B$2:$B$7)))-1,0,MAX(IF(ISERROR(Sheet1!$B$2:$B$7),"",ROW(Sheet1!$B$2:$B$7)))-MIN(IF(ISERROR(Sheet1!$B$2:$B$7),"",ROW(Sheet1!$B$2:$B$7)))+1,1))

然后您可以设置图表,但请记住您需要单独添加/编辑每个系列。忽略图表数据范围字段:

Chart

将每个系列或x轴设置为命名范围时,需要使用对当前工作表或工作簿的引用来限定它。如果您只是指定范围名称,Excel将无法识别它:

Edit Series

Axis Label

设置好所有内容后,“图表数据范围”字段将显示涵盖所有更改数据的合并范围。请勿触摸此字段。已为该系列设定动态范围。随着数据的变化,FMS将自动重新计算图表数据范围。

Updated Range

答案 1 :(得分:1)

Joyce,您可以创建一组具有相同尺寸的单元格,并在偏移中使用这些单元格。用于创建其他一组单元格。选择任何一个单元格并输入以下公式作为数组公式。 (输入以下公式然后按shift + enter)。然后将该单元格复制到附加图像中提到的所有其他单元格。然后,您可以将新的单元格集合作为偏移量。我相信,这将满足您的要求。无论是行还是连续或错误之间。如果使用新单元格的偏移函数,它只有非错误数据,您可以使用它生成图形,图形将根据切片器而改变。只有我做出的假设是,如果是错误,则列B和列C都将具有错误值。因此,它仅根据B列中的值进行过滤。

=IFERROR(INDEX($A$1:$C$10,SMALL(IF(ISERROR($B$2:$B$10),"",ROW($B$2:$B$10)),ROW(A1)),COLUMN(A1)),"")

enter image description here