Google 工作表:如何为其他列中搜索字符串的多个匹配项获取第一列的值?

Google Sheets: How to get values of first column for multiple matches of a search string in the other columns?

我有以下 table,名称在 A 列中,城市在 B 到 E 列中:

城市可以作为单个条目或组合出现(即“都柏林”或“都柏林、旧金山”)。城市组合始终按字母顺序排序,因此不会出现像“特拉维夫、都柏林”这样的组合。

我想获取给定城市组合的所有名称。对于每个城市组合,我想获得一个排序的名称列表,每个单元格一个名称:

例如,组合“Amman, Tel Aviv”在给定数据中出现了四次(图中突出显示),因此在结果 table 中“Amman”行中应该有四个名称, 特拉维夫"。

有没有办法使用公式(而不是脚本)?我知道 HLOOKUP/VLOOKUP 只会 return 一个值。我想过也许 ARRAYFORMULA 和 FILTER 或 MATCH 的某种组合,但我几乎不明白 ARRAYFORMULA 是如何工作的。

Link 到 example sheet.

输入公式后,您可以使用这样的公式(我假设您已经为名称和城市命名范围)执行此操作,然后按 Crtl+Shift+Enter。这将使它和数组公式,然后将它复制到所有其他列:

=(IFERROR(INDEX(names;SMALL(IF(cities=$A20;ROW(names)-MIN(ROW(names))+1);COLUMNS($A:A20)));"")

如果您想详细了解正在发生的事情,请参阅这篇文章。 Extract multiple matches into separate columns

尝试FILTER函数:

=TRANSPOSE(FILTER($A:$A;MMULT(--($B:$E=A20);SEQUENCE(4;1;1;0))=1))

SEQUENCE 函数的第一个参数 4 必须匹配范围 $B:$E

中的列数