从Excel合并列中检索值

我正在做一个横跨多列的值hlookup 。 我的数据与此类似:

  ABCD --------------------------- 1| Col1 Col2 2| xyzw 3| 4| 

在第3行和第4行(A3,B3,C3,D3等)中,我想将公式放在工作簿中的其他位置。 诀窍是,我想要查找“列1”列A和B和“列2”列C和D.“列1”在A1中,但是真正的A1和B1合并。 当我引用A1时,出现“Col1”,但是当我引用B1时,返回值为空。

有任何想法吗?

要访问“Col1”和“Col2”标签,您可以使用以下内容:

= INDEX($ 1:$ 1,1,COLUMN() – MOD(COLUMN() – 1,2))

注意:这假设您正在将相同数量的单元格组合在一起。 如果是三个单元格,则只需将公式中的最后一个数字更改为3,依此类推。

编辑:这是如何工作的:

INDEX($ 1:$ 1,1,x)返回第1行第x列单元格的值。 如果您的表格实际上不在工作表的左上angular,则可以将其更改为包含所有已合并标签的实际范围。 在这种情况下,它将是:INDEX($ A $ 1:$ D $ 1,1,x)

COLUMN()返回当前单元格的列号(列A中的1,列B中的2等)

MOD(COLUMN() – 1,x)返回从当前列到包含正确标签的列的偏移量

这里是另一个解决scheme,当合并的单元格宽度不同时,也可以工作,让我来举个例子:

  1. 打开一个新的Excel,合并B1,C1,D1
  2. 在合并单元格中键入Col1
  3. B2中 ,键入公式= B1 ,在C2 = C1中 ,在D2 = D1中
  4. 你应该看到B2Col1,C2,D20
  5. B3中 ,input公式= A3 ,复制它
  6. 右键单击合并的单元格B1:D1 ,select“粘贴特殊 – >公式”
  7. 您应该看到合并的单元格为0
  8. 在合并单元格中键入Col1
  9. 现在你应该看到所有的B2,C2,D2都是Col1 ,也就是说现在你可以引用合并的单元格了,就像你期望的那样。

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

这个作品背后的原因是由于微软的一个挑剔的deviseselect 。 看起来,当你在公式中粘贴公式时,每个底层单元格都会接收公式(相反,如果你input一个值,只有左上angular的单元格才能得到)所以你可以使用它,并且粘贴一个引用的公式单元格旁边的单元格,然后用所需值覆盖左上angular的单元格,则合并单元格下的每个单元格将具有该值。

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

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

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

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

例如,如果您的标签跨4列a1:d1合并,并且如果您引用b1,则将返回“”。 为了dynamic地find正确的标签,在你的新表中使用这个fx:

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

我相信你会意识到,这将捕捉在E1:H1等范围,当你拖过去。

而已。 希望它可以帮助别人。

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

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

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

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

这取决于这样一个事实,即合并的单元格除了第一个单元格外是空的(除非像Martin提议的那样)。

注意:花括号在那里标记一个数组公式(不要input它们,只需按alt + return来validation单元格中的公式)。