我希望通过VBA实现的是计算某个范围内的列数,但是一旦遇到指定的单元格值,计数就会停止。此外,我想将值分配给我稍后将使用的变量,以便在我写完的子目录中进行计算。
我有一个数据透视表,其宽度会根据我选择包含的月数而变化。如果我的解释不清楚,请看一下图片:)(由于我的声誉不足,不能嵌入图片,但下面有一个链接)最后,我想计算月数并存储它作为变量的值我称之为 numberofmonths 。我对VBA不是很有经验,如果有更好的方法,请告诉我。
我认为这样做的一种方法是定义一个从(3,3)开始的范围,因为这个起点是固定的,结束于说(3,20),因为我不会使用更多最多12个月,然后计算非空单元格的数量,直到包含文本的单元格为#34; Grand Total"遇到了。顺便说一下," Grand Total"旁边的单元格中有数据。列,以及值17/01,17 / 02,...也在那里找到,这就是为什么我认为最好停一次" Grand Total"到达而不是使用某种countif-approach。这有可能吗?任何帮助将不胜感激!
答案 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