【发布时间】:2013-09-29 15:04:50
【问题描述】:
这是 VBA 函数,它使用一组独特的月份填充数组,从开始月份和结束月份生成:
Function get_months(matrix_height As Integer) As Variant
Worksheets("Analysis").Activate
Dim date_range As String
Dim column As String
Dim uniqueMonths As Collection
Set uniqueMonths = New Collection
Dim dateRange As range
Dim months_array() As String 'array for months
column = Chr(64 + 1) 'A
date_range = column & "2:" & column & matrix_height
Set dateRange = range(date_range)
On Error Resume Next
Dim currentRange As range
For Each currentRange In dateRange.Cells
If currentRange.Value <> "" Then
Dim tempDate As Date: tempDate = CDate(currentRange.Text) 'Convert the text to a Date
Dim parsedDateString As String: parsedDateString = Format(tempDate, "MMM-yyyy")
uniqueMonths.Add Item:=parsedDateString, Key:=parsedDateString
End If
Next currentRange
On Error GoTo 0 'Enable default error trapping
'Loop through the collection and view the unique months and years
Dim uniqueMonth As Variant
Dim counter As Integer
counter = 0
For Each uniqueMonth In uniqueMonths
ReDim Preserve months_array(counter)
months_array(counter) = uniqueMonth
Debug.Print uniqueMonth
counter = counter + 1
Next uniqueMonth
get_months = months_array
End Function
如何操作此函数以返回要添加到我的月份数组中的每个值的单元格行。
存储这两个值的最佳方法是什么,即日期(2011 年 10 月)和行号(即 456)
拖曳阵列?然后返回一个包含这两个数组的数组?
谁能提供这个问题的解决方案?
【问题讨论】:
-
BirdsView:您可以使用 2D 数组而不是 2 个数组?
-
这是一个设计为从工作表调用的函数还是从 VBA 中的另一个函数调用的函数?
-
@Bathsheba 从另一个函数,嗯,它在 main() 子中调用
-
@SiddharthRout 是的,二维数组将是完美的
-
为什么要使用 matrix_height 参数?看起来你用它来定义一个范围,但是范围从
A2开始,所以它实际上只定义了一个Range("A2:A" & matrix_height)的范围。所以如果matrix_height = 4,你定义的范围是A2:A4,只有3个单元格,所以我有点困惑。
标签: arrays excel function vba date