Excel公式,用于确定一系列数字变为负数时的单元格ID

时间:2009-03-16 12:52:03

标签: excel excel-formula excel-vba vba

示例数据

     A            B
1  Date        Amount
2  Apr 1        $6,000
3  May 1        $4,250
4  June 1       $2,750
5  July 1       $1,000
6  Aug 1       -$0.075   <- This Cell/Row
7  Sept 1     -$0.2500

在一列数字(实际上是100-200行)中,当值变为负数时,例如如果这些我们是贷款欠款,那么贷款将由还清。请注意,数字之间的实际差异会根据利息,税金,一次性付款等因素而波动。因此,我不能只计算(总金额/付款金额)=月数。

有没有办法使用Excel的公式来确定这个?这可能是需要VBA的情况(这很好),但如果我可以避免它,我想。

3 个答案:

答案 0 :(得分:8)

匹配函数返回范围索引

=MATCH(matchValue, range, matchType: 0=exact, 1=greater than, -1=less than


=MATCH(0, B2:B7, -1)

匹配范围B2:B7中小于0的第一个单元格。从您的样本数据中,这将返回5

使用“偏移”功能可根据索引值

返回特定单元格

答案 1 :(得分:3)

使用 MATCH 公式确定行号。

=MATCH(lookup value, lookup range, lookup type)
=MATCH(0,B1:B7,-1)

您需要使用-1的匹配类型,因为您的数据按降序排列。此设置将返回大于或等于查找值0的最小值。

根据您的数据,这会返回行号 5 。您希望看到行号 6 ,因此公式需要扩展如下。

=MATCH(0,B1:B7,-1)+1

要确定您需要将此公式包装到 ADDRESS 公式中的单元格ID。

=ADDRESS(Row number, Column number)
=ADDRESS(MATCH(0,B1:B7,-1)+1,2)

这将返回值 $ B $ 6

返回相关日期或值可能更有用。这可以使用 OFFSET 公式来完成。

=OFFSET(A1,MATCH(0,B1:B7,-1),0)
=OFFSET(A1,MATCH(0,B1:B7,-1),1)

第一个公式将在A6中返回日期, 8月1日

第二个公式将返回B6中的值, - $ 0.075

答案 2 :(得分:1)

我不确定你是否想要这样做。

如果你想避免使用负数,你可以这样做:

=IF(YOUR_CELL_ACTUAL_FORMULA < 0 , 0, YOUR_CELL_ACTUAL_FORMULA)

如果您想知道数字何时变为负数,您可以这样做:

=MATCH(0, YOUR_AMOUNT_RANGE, -1)

当金额为负时,这将为您提供第一个行号。