通过索引查找值,但不会被删除

Find values through index, but safe from deletion

我有一个输入 sheet,其中包含几个不同的变量,其中包括名称、位置和工作。我想在不同的 sheet 上显示这些值,其中我按组汇总数据。所以输入如下

    A        B     C
1   NAME     CIYY  WORK
2   Bart     NY    Plumber
3   Emily    NY    Firefighter
4   Daniel   LA    Firefighter
5   Cohen    NY    Firefighter
6   Sasha    LA    Plumber
7   Dirk     LA    Plumber
8   Molly    LA    Plumber

现在我想查找洛杉矶水管工的姓名,这意味着它需要看起来像这样:(没有 #NA 并且中间没有空单元格)

    A     
1   NAME
2   Sasha 
3   Dirk  
4   Molly

使用索引、匹配等应该很容易。但是,只需删除行和添加行即可更改输入。 如何在不冒 #REF 错误 的风险的情况下实现这一目标。例如,当 Dirk 被删除时,输出应如下所示:

    A     
1   NAME
2   Sasha 
4   Molly

The solution on this page 非常接近,但在不满足条件时给我留下 #NA。 虽然这些值是唯一的,但我觉得 this solution for extracting unique values 会有帮助,但无法将它们组合起来。

尝试这样的操作,给出整个范围、单元格和列:

=INDEX(1:1048576,MATCH("Bart",A:A,0),MATCH("NY",2:2,0))

因此,您可以从 A:A2:2 中删除,范围将保持不变。

您需要使用 INDEX 和 AGGREGATE 进行两列匹配。

=INDEX(A:A, AGGREGATE(15, 6, ROW(A:INDEX(A:A, MATCH("zzz", A:A)))/((B:INDEX(B:B, MATCH("zzz", A:A))=G)*(C:INDEX(C:C, MATCH("zzz", A:A))=H)), ROW(1:1)))

填写连续的比赛。如果您不想在 运行 匹配项中出现错误代码,请使用 IFERROR 包装器。

我找到了使用 INDRECT 解决此问题的方法。但是我不喜欢这个功能,仍然建议使用 Jeeped 提出的解决方案。

解决方案需要三个步骤。

  1. 添加一个包含两个字符串组合的额外列:即 D2 = B2&C2,并用 =MATCH($M;D:D;0)
  2. 存储第一次出现 LAPlumber 的行
  3. 现在,迭代地找到下一次出现 LAPlumber 的行:=IFERROR(MATCH($M;INDIRECT("$D$"&SUM($N:$N17;1)&":$D";TRUE);0);"")。这个函数使用前面的row-numbers,用INDIRECT重新定义数组。 请注意,这些值的结果是相对于上一行的结果。
  4. 对于每一行,找到对应的名称:=INDEX($A:$C;SUM($N:N18);O)。 sum函数用于合并相对row-numbers。

在图片中我添加了步骤 3 的屏幕截图。单元格 H3 包含步骤 1。列 H 中的其他单元格显示步骤 2 中的行号。