什么我的子正试图做的事:
以阵列(例如(1〜100,1〜36),包含在一个数组的数组)
只有一些拿的列(例如,我只想要列2,5,7等)
将原始数组替换为仅包含那些列的原始数组(因此它将从(1到100,1到36)到例如(1到100 ,1至5))。
我这样做是通过将我想要的列复制到一个新数组,然后擦除原始数据并仅使用新信息重新创建它。引用数组(阵列中)
N.B.我所有的阵列灰色作为第一个变种dim arrVariable as Variant
与arrVariable = Array()
我有阵列arrAggregatedArrays(1 to 8)
的数组
我子的相关部分有云:
FilterSheetArrayForColumns (ArrAggregatedArrays(i))
Private Sub FilterSheetArrayForColumns(ByRef arrSource As Variant)
'/======================================================================================================================================================
'/ Author: Zak Armstrong
'/ Email: [email protected]
'/ Date: 12/August/2015
'/
'/ Description: Takes Sheet arrays, finds the columns from the colAllHeadings, recreates the array with just that data (and empty columns for the ones not found)
'/======================================================================================================================================================
Dim i As Long
Dim j As Long
Dim k As Long
Dim lngFinalRow As Long
Dim lngFinalColumn As Long
Dim arrTempArray As Variant '/ Temporarily holds the filtered information
arrTempArray = Array()
Dim arrHeadingsRow As Variant '/ Holds the top (headings) row for application.match
arrHeadingsRow = Array()
Dim varColumnPosition As Variant '/ Holds the position of the relevant column
Dim strHeading As String '/ The current heading to search for
'/======================================================================================================================================================
AssignArrayBounds arrSource, UB1:=lngFinalRow, UB2:=lngFinalColumn
'/==================================================
'/ Recreate Headings Row
'/==================================================
ReDim arrHeadingsRow(1 To lngFinalColumn)
For i = 1 To lngFinalColumn
arrHeadingsRow(i) = arrSource(1, i)
Next i
'/==================================================
'/ Find Columns, put in array
'/==================================================
ReDim arrTempArray(0 To lngFinalRow, 0 To ColAllHeadings.Count)
arrTempArray(0, 0) = arrSource(0, 0)
Dim lngDestinationColumn As Long
Dim lngSourceColumn As Long
For i = 1 To ColAllHeadings.Count
strHeading = ColAllHeadings(i)
varColumnPosition = Application.Match(strHeading, arrHeadingsRow, 0)
If IsError(varColumnPosition) _
Then
MissingDataHeadingsHandler arrSource, strHeading
Else
lngDestinationColumn = i
lngSourceColumn = varColumnPosition
CopyArrayColumn2d arrSource, arrTempArray, lngSourceColumn, lngDestinationColumn
End If
Next i
CopyArrayContents2d arrTempArray, arrSource
End Sub
但是,在这一分结束,arrAggregatedArrays(i)
仍含有原始数组,而不是过滤的数组。
我想我的代码可能只是擦除引用数组,而不是数组本身。如果是这样的话,我该如何正确引用它?
如果情况并非如此,变量引用出错的地方在哪里?
像您对问题的正确和分析诊断一样。顺便说一句,实际情况可能需要这种类型的锯齿状阵列。 – skkakkar
在这种情况下,它是不同的数据集,但是一旦我将它们放入数组中,其他所有对它们做的操作都是标准化的,所以我宁愿遍历它们,而不是单独调用每个数据集 – Kaz