答案1
对的,这是可能的
然而,你需要在各个派系之间清理一些小问题。
如果你不太关心它是如何工作的,下面是工作公式
=INDEX(世界!$B$2:$B$999,AGGREGATE(15,6,ROW(世界!$B$2:$B$999)/(世界!$E$2:$E$999="LC"),ROW()-8)-1)
- 将任何 $B$999 和 $E$999 替换为您 World 表中总共有多少行。如果您的数据只到第 170 行,则应该是 $B$170 和 $E$170。
- 还可以将“LC”替换为您想要的任何派系,以使公式适用于该派系。
- 最后将 ROW()-8 中的 8 更改为公式起始行的行号 -1。如果下一个派系从第 22 行开始,则 8 应更改为 21。
现在来解释一下
该公式通过创建真假数组来工作
聚合(15,
表示我们要使用 Small 函数。Small 将检索符合我们所需条件的最小值。(或在本例中为第一个 TRUE 值)
总计(15,6
表示我们要忽略除以零的错误,这个错误会相当多。
聚合(15,6,ROW(世界!$B$2:$B$999
创建一个数字范围 2-我们的数据集的长度
聚合(15,6,ROW(世界!$B$2:$B$999)/(世界!$E$2:$E$999="LC)
现在我们说我们要用条件除以我们的数字数组。世界 E2-E999 是我们有派系信息的地方,我们要求 Excel 取该范围内的所有值并返回 TRUE/FALSE。如果派系是“LC”,则返回 True,否则返回 False。这是一个巧妙的技巧,EXCEL 将 TRUE/FALSE 值视为 1 和 0。通过将我们的初始数字数组除以 1,我们返回与列为“LC”的任何派系相对应的行号。否则我们会得到一个除法错误。使用聚合功能忽略错误,剩下要做的就是选择我们想要的第 n 个最小值。
聚合(15,6,ROW(世界!$B$2:$B$999)/(世界!$E$2:$E$999="LC),ROW()-8)
现在我们要在第一个位置选择 LC 的第一个实例。考虑到此公式将从 Factions 表的第 9 行开始,我们使用 ROW() 函数取当前行,然后减去 8。这计算为 ROW()-8 == 9-8 = 1。因此我们取第一个最小值。在这种情况下,这将是第一个世界。
从这里我们添加一个基本的 Index() 语句
INDEX(世界!$B$2:$B$999,AGGREGATE(15,6,ROW(世界!$B$2:$B$999)/(世界!$E$2:$E$999="LC"),ROW()-8)-1)
Index 将查找给定地址处的单元格,我们希望它在 $B$2:$B$999 中进行搜索,这就是我们的 Worlds 所在的位置。我们还从 Small 返回的值中减去 1 作为偏移量,因为我们的 Worlds 不是从第 1 行开始的。
希望这有帮助!