如何确定断点以定义单元格范围 - VBA BEGINNER

时间:2017-01-10 15:33:58

标签: excel vba excel-vba

我正在尝试编写一个程序,该程序将使用定义为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的新手,现在已经能够解决这个问题几天了..

1 个答案:

答案 0 :(得分:0)

您可以尝试以下代码

Sub Test()

lstrng = ActiveSheet.Range("A65000").End(xlUp).Row
Startrng = 1
For i = 1 To lstrng


    If Range("A" & i).Value = "Break" Then
        Endrng = i - 1
        Range("A" & i).Value =  WorksheetFunction.Average(Range(Cells(Startrng, 1), Cells(Endrng, 1)))
        Startrng = i + 1
    End If

Next
End Sub