我有一个范围$A$1:$C$10
,其中的单元格可以为空,也可以包含符合以下格式的文本
string1
(仅字符串1)string1, string2, ...
(string1
在用逗号分隔符分隔的一系列字符串的开头)stringN, ..., string1, ...
(string1
在序列中间的某处)..., string1
(序列末尾的string1
)此外,我还有一个带有两列“ myTable
”和“ String
”的表“ firstOccurence
”。
在“ string
”列中,我有诸如:
string1
string2
string3
...
stringN
在“ firstOccurence
”列中,我想在$A$1:$C$10
(多行)范围内插入出现字符串的最小列号(参见上述格式)。即如果我在“ string1
列中有“ string
”并且“ string1
”位于单元格B2
和C6
中(无论格式如何),我会希望在“ 2
”列中有“ firstOccurrence
”(B是第二列)
如何使用Excel(数组)公式实现此目标?
到目前为止,我有以下代码:
=IF([@[String]]<>"";
IF(
OR(
COUNTIF($A$1:$C$10;[@[String]])>0;
COUNTIF($A$1:$C$10;[@[String]]&", *")>0;
COUNTIF($A$1:$C$10;"*, "&[@[String]])>0;
COUNTIF($A$1:$C$10;"*, "&[@[String]]&", *")>0
);
### What should I put here ? ### ;
""
);
""
)
非常感谢您的帮助。
答案 0 :(得分:1)
尝试在myTable的[firstOccurence]列中使用此数组公式。由于它是一个数组公式,因此请用CTRL+shift+enter
=AGGREGATE(15;6;IF(FIND([@[String]];$A$1:$C$10)>0;COLUMN($A$1:$C$10));1)
答案 1 :(得分:1)
如果像我一样尝试不惜一切代价避免使用数组公式,而只需要检查A,B和C列,则可以使用以下公式:
=IF(COUNTIFS(A$1:A$10,"*"&$E2&"*")>0,1,
IF(COUNTIFS(B$1:B$10,"*"&$E2&"*")>0,2,
IF(COUNTIFS(C$1:C$10,"*"&$E2&"*")>0,3,0)
)
)
这将选择String1,即使它是字符串2的子字符串。它也区分大小写。但是,如果需要,可以很容易地更改公式。
以下是显示其正常工作的图像:
如果您想知道,获取列字母的公式为:
=IFERROR(LEFT(ADDRESS(1,$F2,2),FIND("$",ADDRESS(1,$F2,2))-1),"Not Found")
任何后续问题,请告诉我,我会尽力提供帮助。