查找文本位于哪一列?
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)),"")
感谢阅读本文!
假设我们在这个名为“数据”的工作簿中有 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)),"")