删除导致 #REF 错误的行

Deleting of rows causing #REF errors

我有一个工作表,用户可以输入员工姓名和出生日期进行各种计算。一些用户正在删除导致#REF 计算错误的行,我正在寻找解决方案。间接或偏移是我正在考虑解决问题的选项。

这是我在 A 列中的数据:

  1. 鲍比·琼斯
  2. 理查德·哈登
  3. 斯科特·怀特
  4. 凡妮莎·安德森

H 列从单元格 100 开始我计算 trim 名字:

=IFERROR(RIGHT(A1,LEN(A1)-FIND(" ",A1,1)),"")
  1. 琼斯
  2. 哈登
  3. 白色
  4. 安德森

我的问题是,如果用户删除了 Richard Haden,例如,单元格 H101 会产生 #REF 错误。如何在 H 列的公式中添加 Indirect 或 Offset 函数,以消除删除行时出现 REF 错误的可能性?

我在上述场景中寻找的结果:

  1. 琼斯
  2. 白色
  3. 安德森

感谢您的帮助!

您可以使用 INDEX 到 return 列中行号交界处的单元格。

例如,INDEX($A:$A,1) 将始终 return 第 1 列第一个单元格中的值。INDEX($A:$A,2) 将始终 return 第二个单元格,依此类推。

所以:
=IFERROR(MID(INDEX($A:$A,1),FIND(" ",INDEX($A:$A,1))+1,LEN(INDEX($A:$A,1))),"")
如果删除现有行,将显示新的第一行。

注:
我通常使用 =MID(A1,FIND(" ",A1)+1,LEN(A1)) 而不是 =RIGHT(A1,LEN(A1)-FIND(" ",A1)) 但不知道哪个更快。

注2:使用ROW()-99而不是H100中的1来[=44​​=]正确的行号。
=IFERROR(MID(INDEX($A:$A,ROW()-99),FIND(" ",INDEX($A:$A,ROW()-99))+1,LEN(INDEX($A:$A,ROW()-99))),"")

注 3: INDEX 是非易失性的,而 OFFSET 是(每 次重新计算 )。

您可以尝试这样的操作:

第一步:将 header 单元格添加到您的姓名列表(单元格 A1),例如 "Names"

第二步:在 F 列中添加来自 F100 的计数器(计数器即 1、2、3、4)

使用偏移量(来自单元格 H100):

=IFERROR(RIGHT(OFFSET($A,F100;0),LEN(OFFSET($A,F100;0))-FIND(" ",OFFSET($A,F100;0),1)),"")

快速参考如何使用 OFFSEThttps://exceljet.net/excel-functions/excel-offset-function。背后的逻辑:当你有计数器时,你总是会在 header 下面得到单元格 X 行。删除行不会改变任何内容。

您将看到此解决方案的一个问题是 trim-rows 随着其他行被删除而逐渐增加。这就是为什么我更喜欢将计算隐藏在单独的选项卡上。

但是,您可以将 OFFSETROW 组合起来表示 "The row that is as far from POSITION1 as I am from POSITION2"。如果我们使 POSITION1 = $A(这意味着如果删除第 1 行将失败 - 最好有一个 header 行!)和 POSITION2 = $H0,那么你可以说

OFFSET($A,ROW()-ROW($H0),0)

一些例子

Cell H100: Row() - Row($H0) = 100 - 100 = 0 | OFFSET($A, 0, 0) = A1

Cell H101: Row() - Row($H0) = 101 - 100 = 1 | OFFSET($A, 1, 0) = A2

Cell H110: Row() - Row($H0) = 110 - 100 = 10 | OFFSET($A, 10, 0) = A11

现在,让我们删除第 2 行。这会将 H100 移动到 H99,将 H101 移动到 H100,将 H110 移动到 H109:

Cell H99: Row() - Row($H) = 99 - 99 = 0 | OFFSET($A, 0, 0) = A1

Cell H100: Row() - Row($H) = 100 - 99 = 1 | OFFSET($A, 1, 0) = A2

Cell H109: Row() - Row($H) = 109 - 99 = 10 | OFFSET($A, 10, 0) = A11

(我在你的公式中看到的另一个问题是有两个 2 个名字的人,例如赛车 driver "Juan Pablo Montoya Roldán" - 他的名字是 "Juan Pablo",他的姓氏是 "Montoya Roldán")