我正在对一个跨越多列的值执行hlookup
。我的数据与此类似:
A B C D
---------------------------
1| Col1 Col2
2| x y z w
3|
4|
在第3行和第4行(A3、B3、C3、D3等)中,我想将执行hlookup的公式放在工作簿的其他位置。诀窍是,我希望它在A和B列中查找“Col1”,在C和D列中查找“Col2”。“Col1”在A1中,但实际上是A1和B1合并。当我引用A1时,出现“Col1”,但当我引用B1时,返回值为空。
有什么想法吗
7条答案
按热度按时间i86rm4rw1#
这里有另一个解决方案,当合并的单元格具有不同的宽度时也可以工作,让我用一个例子来说明:
1.打开新的Excel,合并
B1, C1, D1
1.在合并单元格中键入Col 1
1.在
B2
中,键入公式**=B1**,在C2
中,键入公式**=C1**,在D2
中,键入公式**=D1**1.您应该看到
B2
为Col 1,而C2, D2
为01.在
B3
中,键入公式**=A3**,复制它1.右键单击合并单元格
B1:D1
,选择“粘贴特殊->公式”1.您应该会看到合并后的单元格为0
1.在合并单元格中键入Col 1
1.您现在应该看到所有
B2, C2, D2
都是Col 1,即现在你可以引用合并的单元格了。如果您可以合并多个单元格,每个单元格的宽度不同,只需将公式一次性粘贴到所有单元格。
这背后的原因是因为微软的perculier design choice。看起来当你在合并的单元格中粘贴公式时,每个基础单元格都会收到公式(相反,如果你输入一个值,只有左上角的单元格会收到它),所以你可以利用它来粘贴一个引用它旁边的单元格的公式,然后用你想要的值覆盖左上角的单元格,那么合并单元格下面的每个单元格都会有这个值。
i2byvkas2#
要访问“Col 1”和“Col 2”标签,您可以使用以下命令:
=INDEX($1:$1,1,COLUMN()-MOD(COLUMN()-1,2))
注意:这假设您将相同数量的单元格分组在一起。如果它是三个单元格,您只需将公式中的最后一个数字更改为3,依此类推。
**编辑:**以下是它的工作原理:
INDEX($1:$1,1,x)返回第1行第x列的单元格的值。如果您的表实际上并不位于工作表的左上角,则可以将其更改为包含所有合并标签的实际区域。在这种情况下,它将是:指数($A$1:$D$1,1,x)
COLUMN()返回当前单元格的列号(A列为1,B列为2等)
MOD(COLUMN()-1,x)返回从当前列到包含正确标签的列的偏移量
vd2z7a6w3#
我已经在VBA中构建了一个简单的函数来解决这个问题:
如果单元格是合并单元格,则函数将返回合并单元格的第一个元素中的值-这是合并单元格存储其值的位置
of1yzvn44#
一个更通用的变种e.詹姆斯的建议是:
这依赖于这样一个事实,即除了第一个单元格之外,合并的单元格都是空的(除非您遇到类似Martin的提案的情况)。
注意:花括号是用来标记数组公式的(不要输入它们,只需按alt+return来验证单元格中的公式)。
0mkxixxg5#
我意识到我对这个帖子已经晚了,但我找到了一个非常简单的答案。
例如,如果标签跨4列a1:d1合并,并且引用b1,则将返回“"。为了动态地找到正确的标签,请在新表中使用此fx:
我相信你会意识到,这将捕获范围在e1:h1等,因为你拖动。
就这样。希望能帮到大家。
2w2cym1i6#
有了新的动态参考,现在有了更多的选择。下面是我编写的一个通用函数,它将搜索单元格的左侧并返回第一个值。它没有优化,但它为我做了工作。
3bygqnnd7#
单元格B1和D2不包含任何值,只有A1和C1中有值。
因此,您只需确保列A和B中的公式都引用A1作为查找值,列C和D中的公式都引用C1作为查找值。