
例子:
給定一個包含四個欄位的電子表格 - A、B、C 和 D,第 1 行是標題行...
A2=1
B2=(隨機正整數)
C2=(另一隨機正整數)
A3=A2+1
B3=B2-C2
A4=A3+1
B4=B3-C2
…
D2 是有問題的儲存格。在 D2 中,我想傳回 A 列的值,該值與 B 列中 <=0 的值的第一個實例相符。
答案1
與保羅的回答類似,我會使用Index
和Match
=INDEX($A:$A,MATCH(0,$B:$B,-1)+1)
- 使用整列,這樣就不需要根據列中的資料量進行調整。
- 使用
Index
而不是Offset
sinceOffset
是不穩定的,而Index
不是不穩定的。 (易失性函數在每個工作表計算中重新計算,而非易失性函數僅在引用的資料變更時重新計算。過多的易失性函數會降低 Excel 的速度。)
答案2
您可以使用 MATCH 來取得您需要的內容。
MATCH(0,B2:B6,-1)+1
將尋找B2:B6
第一個等於或小於該數字的值0
並傳回其相對位置。它從零開始索引,因此我們添加 1 來匹配您的索引。
從零開始索引表示行 B2 為 0,B3 為 1,B4 為 2,B5 為 3。
您在 A 列中有自己的索引,如果這是非連續的,或包含其他值,或不是從 1 開始,您可以使用 offset 來取得它:
=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 列是如何排序的,該公式都有效。