通过按值选择按行自动填充单元格

通过按值选择按行自动填充单元格

我有一个名为“世界”的表格,然后还有用于跟踪在线游戏的各个派系的多个表格。

每个派系表(例如“LC”、“DC”等)都有该派系控制的世界列表。世界名称从单元格 I9 向下输入。派系代码(LC、DC 等)放在单元格 I7 中。

在世界表中,每个世界名称列在 B 列(从 B2 向下),控制派系代码列在 E 列(从 E2 向下)。

我想要做的是让派系表根据派系表中的代码查找并列出世界表中的世界,然后从单元格 I9 向下级联,而无需手动输入名称。

是否有可能做到这一点?

谢谢您提供的任何帮助。 派系标签 世界标签 索引错误

答案1

对的,这是可能的

然而,你需要在各个派系之间清理一些小问题。

如果你不太关心它是如何工作的,下面是工作公式

=INDEX(世界!$B$2:$B$999,AGGREGATE(15,6,ROW(世界!$B$2:$B$999)/(世界!$E$2:$E$999="LC"),ROW()-8)-1)

  1. 将任何 $B$999 和 $E$999 替换为您 World 表中总共有多少行。如果您的数据只到第 170 行,则应该是 $B$170 和 $E$170。
  2. 还可以将“LC”替换为您想要的任何派系,以使公式适用于该派系。
  3. 最后将 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 行开始的。

希望这有帮助!

相关内容