使用偏移量

时间:2017-07-24 17:55:21

标签: excel excel-formula excel-2010

我的问题与之前提出的问题有关,但由于我是新成员,我无法就该问题发表评论。

earlier question询问我们如何重复删除工作簿中的列表,以便在同一工作簿中的另一个工作表上创建新的唯一值列表。 @achaudhr给出的最高投票解决方案对我有用,但我需要指定公式需要引用的确切单元格。在对该答案的评论中,@ Dan提到如果我们指的是动态范围,我们必须使用OFFSET。

这是我目前正在使用的公式:

B2 = INDEX($ A $ 2:$ A $ 20,MATCH(0,COUNTIF($ B $ 1:B1,$ A $ 2:$ A $ 20),0))

我尝试过使用这个公式的偏移量,但我想我做错了,因为它一直给我#N / A.结果。

如果我的数据在A栏(按照上面的公式),我希望能够动态更改范围的“:$ $ 20 $”部分。 A列中的列表根据我在另一个工作表中放入工作簿的输入而更改(我们称之为工作表3)。因此,我无法对索引公式范围内的单元格进行硬编码,否则每次列表更新时都必须更改此范围。

See the sheet 1 and sheet 2 layout example by clicking this link for an image

基于上述布局,E2中的单元格计算工作表1中A列中列表的最大单元格数。当Sheet 3中的输入发生更改时,此数字会更改。 我编辑了上面的公式,使用OFFSET以下列方式引用E2:

B2 = INDEX(OFFSET('Sheet 1'!$ A $ 1,'Sheet 1'!$ E $ 2,0),MATCH(0,COUNTIF($ B $ 1:B1,OFFSET('Sheet 1) '!$ A $ 1,'Sheet 1'!$ E $ 2,0)),0))

这个公式返回#N / A(我确实按了Ctrl + Shift + Enter,所以不是因为那个)。

我希望这里的小组可以帮我解决这个问题。期待投入并感谢您的帮助。

谢谢, NEHA

1 个答案:

答案 0 :(得分:0)

在动态范围确定公式中使用OFFSET的方法是使用该值作为[height]参数,其中列长度会发生变化。

因此,在您的示例中,公式如下:

B2: =IFERROR(INDEX(OFFSET($A$1,1,0,$E$2-1), MATCH(0, COUNTIF($B$1:B1, OFFSET($A$1,1,0,$E$2-1)), 0)),"")
  

参考:$ A $ 1(也可以设置为$ A $ 2,0行偏移

     

行偏移:1(因为A1包含标题)

     

列偏移:0

     

[height]:$ E $ 2的内容减去1(因为我们不在列表中包含标题)

     

[width]:留空