cLF*_*aVA 6 excel formula excel-formula
我正在hlookup针对跨越多列的值进行操作.我的数据类似于:
A B C D
---------------------------
1| Col1 Col2
2| x y z w
3|
4|
Run Code Online (Sandbox Code Playgroud)
在第3行和第4行(A3,B3,C3,D3等)中,我想在工作簿中放置一个会在其他地方执行hlookup的公式.诀窍是,我希望它为列A和B查找"Col1",为列C和D查找"Col2"."Col1"在A1中,但实际上是A1和B1合并.当我引用A1时,出现"Col1",但是当我引用B1时,返回值为空.
有任何想法吗?
小智 15
这是另一个解决方案,当合并的单元格具有不同的宽度时,它也可以工作,让我用一个例子来说明:
如果您可以使用不同宽度的多个合并单元格,只需将公式粘贴到所有这些单元格中即可.
这项工作背后的原因是因为微软的设计选择.看来,当你粘贴合并单元格的公式,每个基本单元接收的公式(相反,如果你输入一个值,只有左上角单元得到它),这样你就可以在你的优势使用它,并粘贴引用的公式旁边的单元格,然后用您想要的值覆盖左上角的单元格,然后合并单元格下面的每个单元格都将具有该值.
e.J*_*mes 10
要访问"Col1"和"Col2"标签,您可以使用以下内容:
= INDEX($ 1:$ 1,1,COLUMN() - MOD(COLUMN() - 1,2))
注意:这假设您将相同数量的单元格组合在一起.如果它是三个单元格,您只需将公式中的最后一个数字更改为3,依此类推.
编辑:这是它的工作原理:
INDEX($ 1:$ 1,1,x)返回第1行第x列中单元格的值.如果您的表实际上不在工作表的左上角,则可以将其更改为包含所有合并标签的实际范围.在这种情况下,它将是:INDEX($ A $ 1:$ D $ 1,1,x)
COLUMN()返回当前单元格的列号(列A中为1,列B中为2,等等)
MOD(COLUMN() - 1,x)返回从当前列到保存正确标签的列的偏移量
小智 6
我在 vba 中构建了一个简单的函数来解决这个问题:
Function mergedText(rngMergedCell As Range)
If rngMergedCell.MergeCells = True Then
mergedText = rngMergedCell.MergeArea(1, 1)
Else
mergedText = rngMergedCell
End If
End Function
Run Code Online (Sandbox Code Playgroud)
如果单元格是合并单元格,该函数将返回合并单元格的第一个元素中的值 - 这是合并单元格存储其值的地方