抓住列中的倒数第二个值(Microsoft Excel)
Cedric需要确定列中倒数第二个单元格的值,他通常会在该列中添加值。他看到了获取最后一个值的公式,但没有倒数第二个。
有许多公式化的方法可以满足您的需求。在许多方面,您选择的方法将取决于列中数据的特征。假设您的数据在A列中,是数字数据,并且该列中的任何单元格中都没有空格。在这种情况下,可以使用以下公式:
=INDEX(A:A,COUNT(A:A)-1)
请注意,如果A列中有任何文本值,即使该文本值位于标题中,该公式也不会返回正确的结果。如果要补偿标题,可以按这种方式修改公式。 (请注意,它仅检查A2:A1000的范围。如果数据超出行1,000,则需要修改指定的范围。)
=INDEX(A2:A1000,COUNT(A2:A1000)-1)
如果您的数值数据可能包含空单元格,则以下任何公式都可以正常工作:
=OFFSET(INDIRECT("A"&MATCH(9^9,A:A)),-1,0) =INDEX(A:A,MATCH(9.9E+23,A:A,1)-1,1) =INDEX(A:A,(MATCH(LOOKUP(10000,A:A),A:A)-1),1) =INDEX(A:A,AGGREGATE(14,6,ROW(A:A)*A:A/A:A,2))
您应该认识到,如果列中倒数第二个单元格为空,那么这些公式将返回0。(好,除了使用AGGREGATE函数的公式。它返回第一个非空单元格之前的值倒数第二个单元格。)
如果您在A列中的数据可以包含数字或文本(但仍然没有空单元格),那么您需要一个不同的公式。这些都可以做:
=INDEX(A:A,COUNTA(A:A)-1,1) =INDIRECT("A"&COUNTA(A:A)-1)
如果数据中可能有空单元格,则可以使用以下任一方法:
=INDEX(A:A,MATCH(LOOKUP(2,1/(A:A<>""),A:A),A:A,0)-1) =INDEX(A:A,LOOKUP(2,1/(A:A<>""),ROW(A:A))-1)
同样,如果倒数第二个单元格为空,则公式将返回0。
最后,如果列中的单元格使用命名范围(在本例中为MyData),则还可以使用以下类型的公式。
但是请记住,在向列中添加更多信息时,需要确保命名范围包括添加的数据。
=INDEX(MyData,ROWS(MyData)-1)
您应该注意,本技巧中提到的所有公式实际上都使用-1。这表示您不希望范围中的最后一个单元格,而是倒数第二个(范围底部的“一个向上”)。
如果要与范围底部的偏移不同,则可以更改每个公式的此部分。例如,如果要从范围的底部向上增加2个单元格,则可以将-1的所有实例更改为-2。
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本技巧(1523)适用于Microsoft Excel 2007、2010、2013和2016。