查找文本位于哪一列?

Find in which columns lies the text?

感谢阅读本文!

假设我们在这个名为“数据”的工作簿中有 2 列:

| Column A | Column B |
| -------- | -------------- |
| Joshua    | Noah          |
| Daniel   | Joshua         |

在另一个工作簿中,我希望用户在单元格中输入一些随机名称。

在该单元格下方,我希望能够显示 him/her,该名称位于哪一列。例如。如果他输入“Joshua”,我想显示在下面:

||
|--|
|Column A|
|Column B|

我更喜欢使用公式,而不是 VBA,因为它会弄乱我经验不足的最终用户!

注:如果觉得有用请看下面我的尝试:

(1) 我试过在里面使用嵌套的 IF + FILTER 函数,但是 IF returns 只有第一个 TRUE 列,像这样:

| |
|------|
| Column A |
| Column A |

这是我的实际公式,我指的是 sheet“6”中的拆分范围,其中有 4 列:

IF(NOT(ISERROR(FILTER('6'!B4#,ISNUMBER(SEARCH($F,'6'!B4#))))),'6'!$B,
IF(NOT(ISERROR(FILTER('6'!D4#,ISNUMBER(SEARCH($F,'6'!D4#))))),'6'!$D,
IF(NOT(ISERROR(FILTER('6'!F4#,ISNUMBER(SEARCH($F,'6'!F4#))))),'6'!$F,
IF(NOT(ISERROR(FILTER('6'!H4#,ISNUMBER(SEARCH($F,'6'!H4#))))),'6'!$H,"")))) 

你可以用这个公式得到列号(工作表“10”上的原始数据)

=AGGREGATE(15,6,1/('10'!A:D="Joshua")*COLUMN('10'!A:D),SEQUENCE(COUNTIF('10'!A:D,"Joshua")))

虽然我建议将范围引用从完整列减少到更短的内容以减少计算时间。

使用 Office 365,您可以将列号转换为字母:

=LET(col,AGGREGATE(15,6,1/('10'!A:D="Joshua")*COLUMN('10'!A:D),SEQUENCE(COUNTIF('10'!A:D,"Joshua"))),
          adr,ADDRESS(1,col,2),
         "Column " & LEFT(adr,FIND("$",adr)-1))

您可以使用:

D2中的公式:

=FILTER(TRANSPOSE(A1:B1),MMULT(--(TRANSPOSE(A2:B3)=D1),SEQUENCE(ROWS(A2:B3),,,0)),"")