8

我正在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 时,返回值为空白。

有任何想法吗?

4

7 回答 7

16

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

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

如果您可以合并多个单元格,每个单元格的宽度都不同,只需将公式一次性粘贴到所有单元格中。

这项工作背后的原因是因为微软的设计选择更加复杂。似乎当您在合并的单元格中粘贴公式时,每个底层单元格都会收到公式(相反,如果您输入一个值,只有左上角的单元格会收到它)所以您可以利用它并粘贴引用的公式它旁边的单元格,然后用您想要的值覆盖左上角的单元格,然后合并单元格下面的每个单元格都将具有该值。

于 2014-06-12T17:52:58.953 回答
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) 返回从当前列到保存正确标签的列的偏移量

于 2009-01-15T17:43:47.020 回答
6

我在 vba 中构建了一个简单的函数来解决这个问题:

Function mergedText(rngMergedCell As Range)

    If rngMergedCell.MergeCells = True Then
        mergedText = rngMergedCell.MergeArea(1, 1)
    Else
        mergedText = rngMergedCell
    End If

End Function

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

于 2009-07-22T15:31:38.627 回答
2

e.James 提议的一个更通用的变体是:

={INDEX($A$1:A1, 1, MAX(NOT(ISBLANK($A$1:A1))*COLUMN($A$1:A1)-COLUMN($A$1)+1))}

这依赖于合并的单元格除了第一个单元格之外是空的这一事实(除非您遇到像 Martin 的提议那样的情况)。

注意:大括号用于标记数组公式(不要输入它们,只需按 alt+return 即可验证单元格中的公式)。

于 2016-12-22T11:34:24.243 回答
1

我意识到我迟到了这个线程,但我找到了一个非常简单的答案。

例如,如果您的标签在 a1:d1 的 4 列中合并,并且如果您引用 b1,您将返回 ""。要动态查找正确的标签,请在新表中使用此 fx:

=if(OriginalTable!B1="",ThisTable!A1,OriginalTable!B1)

我相信您会意识到,当您拖过时,这将捕获 e1:h1 等中的范围。

就是这样。希望它可以帮助某人。

于 2015-09-28T16:36:36.993 回答
0

单元格 B1 和 D2 不包含任何值,只有 A1 和 C1 里面有东西。

因此,您只需确保 A 列和 B 列中的公式都将 A1 引用为查找值,并且 C 列和 D 列中的公式都将 C1 引用为查找值。

于 2009-01-15T17:39:03.177 回答
0

有了新的动态参考,现在有更多的选择。这是我编写的一个通用函数,它将搜索单元格的左侧并返回第一个值。它没有优化,但它为我完成了这项工作。

=LET(
TargetCell, A1,
TargetRow, ROW(TargetCell),
TargetCol, COLUMN(TargetCell),
RowReference, INDIRECT(TargetRow & ":" & TargetRow),
RowValues, TRANSPOSE(FILTER(RowReference,ISBLANK(RowReference)=FALSE)),
RowValueColumns, MATCH(RowValues, RowReference,0),
ReturnColumn, MAX(FILTER(RowValueColumns,RowValueColumns<=TargetCol)),
Return, INDIRECT(ADDRESS(TargetRow,ReturnColumn)),

Return
)
于 2021-06-29T17:39:54.963 回答