【发布时间】:2017-01-10 15:33:57
【问题描述】:
我正在尝试编写一个程序,该程序将使用定义为 BREAK_A、BREAK_B 和 BREAK_C 的变量之间的一系列单元格计算平均值 - 其中这些断点之间的范围将根据用户输入而有所不同 -因此计算平均值的范围会有所不同。
需要注意的是,A1 和 A10 永远不能成为断点的位置。
Excel 电子表格示例:
A1 = 11
A2 = 24
A3 = 15
A4 = BREAK_C
A5 = 17
A6 = BREAK_B
A7 = 6
A8 = 33
A9 = BREAK_A
A10 = 12
尝试使用一些伪代码:
Public Sub Sort()
DIM BREAK_A AS NUM
DIM BREAK_B AS NUM
DIM BREAK_C AS NUM
DIM RANGE1 AS VARIANT
DIM RANGE2 AS VARIANT
DIM RANGE3 AS VARIANT
DIM FULL_RANGE AS VARIANT
FIND CELL NUMBERS OF(BREAK_A, BREAK_B, BREAK_C)
SORT CELL NUMBERS IN ASCENDING ORDER
RANGE1 = "A1: LOWEST CELL NUMBER OF BREAK"
RANGE2 = "LOWEST CELL NUMBER OF BREAK +1 : NEXT HIGHEST CELL NUMBER OF BREAK"
RANGE3 = "NEXT HIGHEST CELL NUMBER OF BREAK +1 : END"
我的问题是 BREAK 点会根据用户输入填充不同的单元格位置。我想编写一个程序来定义计算平均值的单元格范围 - 取决于断点的位置。
另外,有时 BREAK 可能不存在 - 所以我不能总是使用 BREAK_A、BREAK_B、BREAK_C 作为我范围的终点,因为您可能会遇到只应考虑 BREAK_A 和 BREAK_C 而 BREAK_B 不存在的情况.
对于这个例子,我要计算 =AVG(A1:A3, A5, A7:A8, A10)
我们将不胜感激在产生想法方面的任何帮助。我是 VBA 新手,已经好几天没能解决这个问题了..
【问题讨论】:
-
所以你想平均每个不包含
BREAK_?的单元格?工作表函数 Average 将自行忽略文本:=AVERAGE(A1:A10)将返回 16.857。还是您想要基于休息时间的 4 个不同的平均值? -
@ScottCraner 我需要除 BREAKS 之外的所有数字的平均值 - 但是,break 值也是用户定义的数字。我应该说得更清楚。