在列表中查找“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
例如: