在列表中查找“x”连续数字的最低总和

我正在寻找在一列91个数字(例如,列A)中findx个连续数字的最低总和。 例如,如果x是30,我想在91号码列中find30个连续号码的最低总和。 我需要对每个30到78之间的x值进行计算。

x = 30的情况下,蛮力,非VBA方法看起来是这样的:

=MIN(SUM(A1:A30),SUM(A2:A31),SUM(A3:32),...,SUM(A62:A91)) 

对于x = 78的情况,这个非VBA方法看起来像这样:

 =MIN(SUM(A1:A78),SUM(A2:A79),SUM(A3:A80),...,SUM(A14:A91)) 

我有20列(每个有91个数字),我需要应用此function,所以列也需要是一个variables。 我的猜测是我们将定义一个范围长度input(即x )和input的函数。

我没有太多的VBA语法的经验。 你们能帮我制定一些东西吗?

我通常会尝试自己解决这个问题(我尝试了Excel的powershell方式,然后试图制作自己的UDF,但我不知道从哪里开始)。

你需要VBA吗?

可以用“数组公式”来做到这一点,例如,如果你的“x”值在单元格Z1你可以使用这个公式

=MIN(SUBTOTAL(9,OFFSET(A1:A91,ROW(INDIRECT("1:"&COUNT(A1:A91)-Z1+1)),0,Z1)))

CTRL + SHIFT + ENTER确认

考虑下面的UDF

 Public Function consec(rng As Range, x As Long) As Double Dim r As Range, i As Long, mymin As Double, temp As Double Dim wf As WorksheetFunction Set wf = Application.WorksheetFunction i = 1 Set r = rng(i).Resize(x, 1) mymin = wf.Sum(r) For i = 2 To rng.Count - x + 1 Set r = rng(i).Resize(x, 1) temp = wf.Sum(r) If temp < mymin Then mymin = temp End If Next i consec = mymin End Function 

例如:

在这里输入图像说明