从Excel合并列中检索值

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

这是另一个解决方案,当合并的单元格具有不同的宽度时,它也可以工作,让我用一个例子来说明:

  1. 打开一个新的Excel,合并B1,C1,D1
  2. 在合并的单元格中键入Col1
  3. B2中,键入formula = B1,并且在C2 = C1中,在D2 = D1中
  4. 您应该看到B2Col1,C2,D20
  5. B3中,键入公式= A3,复制它
  6. 右键单击合并的单元格B1:D1,选择"粘贴特殊 - >公式"
  7. 您应该看到合并的单元格为0
  8. 在合并的单元格中键入Col1
  9. 您现在应该看到所有B2,C2,D2都是Col1,即现在您可以按预期引用合并的单元格.

如果您可以使用不同宽度的多个合并单元格,只需将公式粘贴到所有这些单元格中即可.

这项工作背后的原因是因为微软的设计选择.看来,当你粘贴合并单元格的公式,每个基本单元接收的公式(相反,如果你输入一个值,只有左上角单元得到它),这样你就可以在你的优势使用它,并粘贴引用的公式旁边的单元格,然后用您想要的值覆盖左上角的单元格,然后合并单元格下面的每个单元格都将具有该值.

  • 好技巧!似乎在 Google 表格中不起作用。 (2认同)

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)

如果单元格是合并单元格,该函数将返回合并单元格的第一个元素中的值 - 这是合并单元格存储其值的地方