例子:
给定一个有四列的电子表格 - A,B,C 和 D,第 1 行是标题行...
A2=1
B2=(随机正整数)
C2=(另一个随机正整数)
A3=A2+1
B3=B2-C2
A4=A3+1
B4=B3-C2
...
D2 是问题单元格。在 D2 中,我想返回与 B 列中 <=0 的值的第一个实例匹配的 A 列的值。
答案1
与保罗的回答类似,我会Index
使用Match
=INDEX($A:$A,MATCH(0,$B:$B,-1)+1)
- 使用整列,因此不需要根据列中的数据量进行调整。
- 使用
Index
而不是Offset
因为Offset
是易失性的 而Index
不是。(易失性函数在每次工作表计算时都会重新计算,而非易失性函数仅在引用数据发生变化时才重新计算。过多的易失性函数会降低 Excel 的速度。)
答案2
您可以使用 MATCH 来获取所需内容。
MATCH(0,B2:B6,-1)+1
将查找B2:B6
第一个等于或小于该数字的值0
并返回其相对位置。它的索引从零开始,因此我们加一以匹配您的索引。
从零开始索引意味着行 B2 为 0,B3 为 1,B4 为 2 且 B5 为 3。因此 MATCH 将返回“3”。
您在 A 列中有自己的索引,并且如果它是非连续的,或者包含其他值,或者不是从 1 开始,则可以使用偏移量来获取它:
=OFFSET(A2,MATCH(0,B2:B6,-1),0)
因此,这是使用 MATCH 的结果从 A2 向下计数以找到该行位置的值。
答案3
你不能仅使用 B2 和 C2 来计算吗?
=CEILING(B2/C2,1)+1
根据我在克里斯的回答中的评论 -更新后的版本
=INDEX($A:$A,MATCH(TRUE,INDEX($B:$B<=0,0),0))
这应该可以避免 Chris 的建议中固有的问题,即当第一个值 <=0 本身是 0 时,您会得到错误的值。
该部分$B:$B<0
返回一个TRUE/FALSE
值的“数组”,第一个值TRUE
显然与第一个 B 列值 <0 相重合,然后 MATCH 找到第一个实例的位置,然后 INDEX 从 A 列获取相应的值。
第二个 INDEX 只是为了避免“数组输入” - 没有它也可以工作,即
=INDEX($A:$A,MATCH(TRUE,$B:$B<=0,0))
......但该版本需要“输入数组” - 即确认CTRL+SHIFT+ENTER
。
与之前的建议相比,使用整列稍微有点效率低下(而且这在 Excel 2003 或更早版本中不起作用 - 在这些版本中您需要使用特定范围)。
请注意,根据 Chris 的建议,匹配类型为 -1 的 MATCH 需要在 B 列中具有降序值 - 无论 B 列如何排序,此公式都有效。