正确使用偏移功能

时间:2014-01-07 15:13:53

标签: excel excel-2010

我有以下公式

=IFERROR(IF(FIND(OFFSET($B$2,1,0),$A3,1),VLOOKUP(OFFSET($B$2,1,0),'Keyword list'!B2:E316533,2,FALSE),""),"n/a")

如果找到该单词则查找与单词关联的值,否则返回“n / a”。我已经包含OFFSET()函数,希望这样做,以便当我将公式移动到另一列时,比如从列B到列C,引用仍然不是$ B $ 2,而不是C2,而是B3。实际上,我正在努力使它在公式被拖过参考行而不是列时更改,当我向下拖动时,引用仍然固定在$ B $ 2,$ B $ 3等等。是否可以使用偏移功能来执行此操作?我试图将其应用于上述公式时是否存在明显的错误?谢谢!

3 个答案:

答案 0 :(得分:2)

这是未经测试的,但我认为它可以做你想要的,即将参考值向下移动一行,对于你向右拖动的每一列。它使用COLUMNS函数锚定在B的一半而相对于另一半:

=IFERROR(IF(FIND(OFFSET($B$2,COLUMNS($B:B),1),$A3,1),VLOOKUP(OFFSET($B$2,COLUMNS($B:B),1),'Keyword list'!B2:E316533,2,FALSE),""),"n/a")

答案 1 :(得分:2)

您可以尝试以下方法吗?

=IFERROR(IF(FIND(OFFSET($B$2,COLUMNS($A:A)-1,0),$A3,1),
 VLOOKUP(OFFSET($B$2,COLUMNS($A:A)-1,0),'Keyword list'!$B$2:$E$31,2,FALSE),""),
 "n/a")

我制作了google spreadsheet,以便您可以尝试拖动公式。

该公式的限制是它将依赖公式的列,并且不能在Excel中向左拖动,因为这将导致引用COLUMNS($A:A)转到COLUMNS(#REF!)。它可以放在任何列中,然后拖到右边。

答案 2 :(得分:1)

我会使用INDIRECT从计算字符串中构建引用。

INDIRECT("B"&(2+COLUMN(<current cell>)-COLUMN($B$1)))

这样,您的参考值将根据B列的偏移量进行计算:

在单元格D2中,引用的单元格为"B"&(2+COLUMN(D2)-COLUMN($B$1)) = "B"&(2+4-2) = "B4" 在单元格D3中,引用不会更改,因为只考虑了列。

单元格E2相同:"B"&(2+COLUMN(E2)-COLUMN($B$1)) = "B"&(2+5-2) = "B5"

如果您的计算是固定的,您甚至可以只将COLUMN(E2)作为2并且COLUMN(B1)相互抵消:INDIRECT("B"&COLUMN(<current cell>)))