正确使用偏移函数

我有以下公式

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

如果find该单词,则查找与单词相关联的值,否则返回“n / a”。 我已经包含了OFFSET()函数,希望能够将公式移到另一列,比如从B列到C列,引用不是$ B $ 2,而是C2,而不是B3。 有效地,我试图做到这一点,当公式是拖动引用行更改而不是列,当我拖动引用保持固定在$ B $ 2,$ B $ 3等等。 是否有可能使用偏移function来做到这一点? 我试图将其应用于上述公式时有明显的错误吗? 谢谢!

你也许可以尝试以下?

 =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") 

我做了一个谷歌电子表格,以便您可以尝试拖动公式。

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

这是没有经过testing的,但是我认为它是按照你想要的,也就是说,将参考向下移动一行,对于你向右拖动的每一列。 它使用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") 

我会使用INDIRECT来build立一个计算string的参考。

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

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

在单元格D2中引用的单元格是"B"&(2+COLUMN(D2)-COLUMN($B$1)) = "B"&(2+4-2) = "B4" ,因为只有列被考虑在内。

"B"&(2+COLUMN(E2)-COLUMN($B$1)) = "B"&(2+5-2) = "B5"

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