说我已经有A1-A10号格式的数字。我在单元格B1中的初始公式是= A1-A6。然而,我想打出单元格A3(如果可能的话,保持内容在可见的下方可见),我希望B1中的公式识别出这种变化,然后自动调整为= A1-A7 (我的想法是,我希望A1减去单元格中的数字5“未被击中”的单元格下面的单元格)。然后,如果我击出单元格A5,我希望公式将自己调整为= A1-A8,依此类推。有谁知道怎么做?
答案 0 :(得分:1)
(编辑#1:误读输入,抱歉)
有点直截了当,但会完成这项工作:输入=A1-INDIRECT("A"&SMALL(IF(A:A<>"",ROW(A:A),""),6))
并按 CTRL + SHIFT + ENTER 而不是通常 ENTER - 这将定义一个ARRAY公式,并在其周围生成{}
括号(但不要手动输入!)。
为了加快计算速度,您可以将A:A替换为任何有限的范围。
示例文件(结果公式带有黄色标记):https://www.dropbox.com/s/sy7zkg71xtfgib9/Subtract5th.xlsx
(编辑#2:误读“罢工”,对不起)
默认Excel函数可能无法读取字体样式(以及类似的单元格属性),这就是您需要添加名为StrikeOut
的UDF的原因:
Insert > Module
。将代码粘贴到添加的模块:
Function StrikeOut(R As Range) As Long
Dim c As Range
StrikeOut = 0
For Each c In R.Cells
If c.Font.Strikethrough = True Then StrikeOut = StrikeOut + 1
Next
End Function
将公式添加到B1:=A1-INDIRECT("A"&(6+StrikeOut(A2:A10)))
A1:A10
中的任何单元格。B1
中的结果。 / LI>
醇>
共享示例文件:https://www.dropbox.com/s/n9o7tn3ks3x8nza/StrikeOut.xlsm
P.S。至少对我来说非常有用)))