添加数字直到达到价值

时间:2014-10-09 09:15:35

标签: excel vba excel-vba excel-formula excel-2013

我希望在一个单元格(A1)中有一个阈值,并将其作为添加单元格的参考。

假设我有

A1 - 10
A2 - 4
A3 - 2
A4 - 3
A5 - 4
A6 - 6

我想基于A1(阈值)添加单元格。
当A1为10时,应加入A6:A5的细胞 - 结果:10
如果A1为6,则应返回单元格A6-结果:6
如果A1为16,则应添加A6:A3中的单元格 - 结果:19

没有VBA可以吗?我可以得到一些单元格的数量以及总和吗?

3 个答案:

答案 0 :(得分:2)

您可以使用INDIRECT()功能。

=SUM(INDIRECT("A6:A"&ROUNDDOWN(A1/2,0)))

用于计数使用

=COUNT(INDIRECT("A6:A"&ROUNDDOWN(A1/2,0)))

答案 1 :(得分:2)

我已为SUMROW添加了一些进展OFFSET操作以进行以下操作。请注意,我已修改并添加到您的示例数据中,以获得更全面的结果。

enter image description here

C2中的SUM公式为=SUM(OFFSET($A$2,0,0,MAX(INDEX((SUBTOTAL(9,OFFSET($A$2, 0,0,ROW(1:99),1))<$A$1)*ROW(1:99),,))+1,1)),而COUNT来自D2 =MAX(INDEX((SUBTOTAL(9,OFFSET($A$2, 0,0,ROW(1:99),1))<$A$1)*ROW(1:99),,))+1。 TBH,我没有对数据中的零进行多少实验,因为我不确定你是否愿意在进展中计算它们。

答案 2 :(得分:1)

很难击中移动目标但是对于修改后的参数,请尝试以下操作。

=SUM(OFFSET($A$6,0-MAX(INDEX((SUBTOTAL(9,OFFSET($A$6,1-ROW(1:5),0,ROW(1:5),1))<$A$1)*ROW(1:5),,)),0,MAX(INDEX((SUBTOTAL(9,OFFSET($A$6,1-ROW(1:5),0,ROW(1:5),1))<$A$1)*ROW(1:5),,))+1,1))

=MAX(INDEX((SUBTOTAL(9,OFFSET($A$6,1-ROW(1:5),0,ROW(1:5),1))<$A$1)*ROW(1:5),,))+1

虽然Excel希望以'向右下方'进展计算,但OFFSET()函数将接受参数以重新定位起点并重新调整高度和细胞范围的宽度相加。一般来说,工作'向右下方'可以留出一些喘息的空间进行扩展,但是你必须非常小心,不要试图向上移动超过第1行( #REF!错误)。

OFFSET function

如果有任何保证数值不会低于A6但该点未得到解决,那么公式可以简化,所以我的公式会停止A6处的总和操作。