我希望找到91个数字列中的 x 连续数字的最低总和(例如,A列)。例如,如果 x 为30,我想在91号列中找到30个连续数字的最小总和。我需要对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个数字)应用于此函数,因此该列也需要是一个变量。我的猜测是我们要定义一个 范围长度 输入的函数(即 x )和 列 输入。
我对VBA语法没有多少经验。你们/ gals能帮助我制定一些东西吗?
我通常会尝试自己解决这个问题(我尝试使用Excel蛮力,然后尝试制作自己的UDF,但我不知道从哪里开始)。
答案 0 :(得分:2)
考虑以下 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
例如:
答案 1 :(得分:1)
你需要VBA吗?
可以使用&#34;数组公式&#34;来完成此操作,例如如果你的&#34; x&#34;值在单元格Z1
中,您可以使用此公式
=MIN(SUBTOTAL(9,OFFSET(A1:A91,ROW(INDIRECT("1:"&COUNT(A1:A91)-Z1+1)),0,Z1)))
使用 CTRL + SHIFT + ENTER确认