我有一个工作表,用户输入员工姓名和出生日期进行各种计算。一些用户正在删除导致计算出现#REF错误的行,我正在寻找围绕它的解决方案。间接或偏移是我正在考虑解决问题的选项。
以下是A栏中的数据:
从单元格100开始的列H我有一个计算来修剪名字:
=IFERROR(RIGHT(A1,LEN(A1)-FIND(" ",A1,1)),"")
我的问题是,例如,如果用户删除了Richard Haden,则单元格H101会产生#REF错误。如何在列H中的公式中添加间接或偏移功能,以消除删除行时出现REF错误的可能性?
结果我正在寻找以上场景:
感谢您的帮助!
答案 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)),"")
快速参考如何使用OFFSET
:https://exceljet.net/excel-functions/excel-offset-function。背后的逻辑:因为你有计数器,你总是会在标题下面得到单元格X行。删除行不会改变任何内容。
答案 2 :(得分:0)
您将在此解决方案中看到的问题是,修剪行会随着其他行的删除而逐渐增加。这就是为什么我更喜欢将计算隐藏在单独的选项卡上。
但是,您可以将OFFSET
与ROW
结合起来说“离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”)