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

Google sheets GoogleSheets:如何为其他列中搜索字符串的多个匹配项获取第一列的值?,google-sheets,match,array-formulas,Google Sheets,Match,Array Formulas,我有下表,A列有姓名,B至E列有城市: 城市可以作为单个条目或组合出现(即“都柏林”或“都柏林,旧金山”)。城市组合总是按字母顺序排序,因此不能出现“特拉维夫,都柏林”这样的组合 我想获得给定城市组合的所有名称。对于每个城市组合,我希望得到一个名称的排序列表,每个单元格有一个名称: 例如,“安曼,特拉维夫”组合在给定数据中出现四次(在图像中突出显示),因此在生成的表中,“安曼,特拉维夫”行中应该有四个名称 有没有办法使用公式(而不是脚本)?我知道HLOOKUP/VLOOKUP只返回一个值。我

我有下表,A列有姓名,B至E列有城市:

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

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

例如,“安曼,特拉维夫”组合在给定数据中出现四次(在图像中突出显示),因此在生成的表中,“安曼,特拉维夫”行中应该有四个名称

有没有办法使用公式(而不是脚本)?我知道HLOOKUP/VLOOKUP只返回一个值。我曾经考虑过ARRAYFORMULA和FILTER或MATCH的一些组合,但我几乎不了解ARRAYFORMULA是如何工作的


链接到。

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

=(索引(名称;小型)(如果(城市=$A20;行(名称)-MIN(行(名称))+1);列($A$20:A20));“”)


如果您想详细了解正在发生的情况,请参阅本文。

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

=(索引(名称;小型)(如果(城市=$A20;行(名称)-MIN(行(名称))+1);列($A$20:A20));“”)


如果您想详细了解正在发生的情况,请参阅本文。

尝试
过滤器
功能:

=TRANSPOSE(FILTER($A$3:$A$15;MMULT(--($B$3:$E$15=A20);SEQUENCE(4;1;1;0))=1))
SEQUENCE
函数的第一个参数
4
必须与范围
$B$3:$E$15中的列数匹配


尝试
过滤器
功能:

=TRANSPOSE(FILTER($A$3:$A$15;MMULT(--($B$3:$E$15=A20);SEQUENCE(4;1;1;0))=1))
SEQUENCE
函数的第一个参数
4
必须与范围
$B$3:$E$15中的列数匹配