VBA:计算范围内的列数,直到遇到指定的值

时间:2017-05-24 10:52:05

标签: excel vba excel-vba

我希望通过VBA实现的是计算某个范围内的列数,但是一旦遇到指定的单元格值,计数就会停止。此外,我想将值分配给我稍后将使用的变量,以便在我写完的子目录中进行计算。

我有一个数据透视表,其宽度会根据我选择包含的月数而变化。如果我的解释不清楚,请看一下图片:)(由于我的声誉不足,不能嵌入图片,但下面有一个链接)最后,我想计算月数并存储它作为变量的值我称之为 numberofmonths 。我对VBA不是很有经验,如果有更好的方法,请告诉我。

我认为这样做的一种方法是定义一个从(3,3)开始的范围,因为这个起点是固定的,结束于说(3,20),因为我不会使用更多最多12个月,然后计算非空单元格的数量,直到包含文本的单元格为#34; Grand Total"遇到了。顺便说一下," Grand Total"旁边的单元格中有数据。列,以及值17/01,17 / 02,...也在那里找到,这就是为什么我认为最好停一次" Grand Total"到达而不是使用某种countif-approach。这有可能吗?任何帮助将不胜感激!

https://i.stack.imgur.com/pzBpb.png

1 个答案:

答案 0 :(得分:0)

VBA可以做任何事情。这将计算第2行中的单元格,从Col B开始向右,直到达到“Grand Total”。它会按您的意愿返回月份数。

Function CountMonth() As Integer
Dim LastCol As Long
Dim sht As Worksheet
Dim Counter As Integer

Set sht = Worksheets("Sheet1")
LastCol = sht.Cells(3, Columns.Count).End(xlToLeft).Column

For i = 2 To LastCol
    If sht.Cells(3, i).Value <> "Grand Total" Then
        Counter = Counter + 1
    Else 
        Exit For
    End If
Next i
CountMonth = Counter
End Function