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
中的列数
我有以下 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