删除导致#REF错误的行

时间:2018-02-15 14:57:14

标签: excel-formula excel-2013 excel-indirect

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

以下是A栏中的数据:

  1. Bobby Jones
  2. Richard Haden
  3. Scott White
  4. Vanessa Anderson
  5. 从单元格100开始的列H我有一个计算来修剪名字:

    =IFERROR(RIGHT(A1,LEN(A1)-FIND(" ",A1,1)),"")
    
    1. 琼斯
    2. 海登
    3. 安德森
    4. 我的问题是,例如,如果用户删除了Richard Haden,则单元格H101会产生#REF错误。如何在列H中的公式中添加间接或偏移功能,以消除删除行时出现REF错误的可能性?

      结果我正在寻找以上场景:

      1. 琼斯
      2. 安德森
      3. 感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

您可以使用INDEX返回列中行号连接处的单元格。

例如,INDEX($A:$A,1)将始终返回第1列第一个单元格中的值。INDEX($A:$A,2)将始终返回第二个单元格等。

所以:
=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:在H100中使用ROW()-99而不是1来返回正确的行号。
=IFERROR(MID(INDEX($A:$A,ROW()-99),FIND(" ",INDEX($A:$A,ROW()-99))+1,LEN(INDEX($A:$A,ROW()-99))),"")

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

答案 1 :(得分:0)

您可以尝试这样的事情:

第一步:将标题单元格添加到名称列表(单元格A1),例如"名称"

第二步:从F100(计数器,即1,2,3,4)中添加F列中的计数器

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

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

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

答案 2 :(得分:0)

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

但是,您可以将OFFSETROW结合起来说“离POSITION1一直远离POSITION2的行”。如果我们使POSTION1 = $A$1(这意味着如果第1行被删除则会失败 - 最好有一个标题行!)和POSITION2 = $H$100,那么你可以说

OFFSET($A$1,ROW()-ROW($H$100),0)

一些例子

  

单元格H100:行() - 行($ H $ 100)= 100 - 100 = 0 | OFFSET($A$1, 0, 0) = A1

     

单元格H101:行() - 行($ H $ 100)= 101 - 100 = 1 | OFFSET($A$1, 1, 0) = A2

     

单元格H110:行() - 行($ H $ 100)= 110 - 100 = 10 | OFFSET($A$1, 10, 0) = A11

现在,让我们删除第2行。这将H100转为H99,H101转为H100,H110转为H109:

  

单元格H99:行() - 行($ H $ 99)= 99 - 99 = 0 | OFFSET($A$1, 0, 0) = A1

     

单元格H100:行() - 行($ H $ 99)= 100 - 99 = 1 | OFFSET($A$1, 1, 0) = A2

     

单元格H109:行() - 行($ H $ 99)= 109 - 99 = 10 | OFFSET($A$1, 10, 0) = A11

(我能用你的公式看到的另一个问题是有两个2个名字的人,比如赛车手“Juan PabloMontoyaRoldán” - 他的名字是“Juan Pablo”,他的姓是“MontoyaRoldán”)