我正在尝试将工作表中的信息放入数组中,使用:
WBArray = ActiveSheet.Range(Cells(5, 1), Cells(end1, 29)).Value
但是有一些问题:首先我的原始范围的最后两行包含无用的数据。当我将它们传递给数组时,我怎么能删除这两行?有没有像我正在使用的直接方法?
其次,我的范围从第5行开始,但由于它必须通过旧文件,因此该数字可能不同。有没有办法可以创建一个浮动引用,所以它会根据我想要的数据开始变化? (例如,如果它从第7行开始)。
我已经尝试过遍历每个项目,但这似乎也不起作用。
有什么想法吗?
答案 0 :(得分:1)
也许
Sub x()
Dim start1 As Long, end1 As Long, WBArray, r As Range
With ActiveSheet
Set r = .Columns(1).Find(What:="Identifier", After:=.Cells(.rows.Count,1), LookAt:=xlWhole, _
SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
If Not r Is Nothing Then
start1 = r.Row
end1 = .Range("A" & Rows.Count).End(xlUp).Row - 2
WBArray = .Range(Cells(start1, 1), Cells(end1, 29)).Value
Else
MsgBox "Identified not found"
End If
End With
End Sub
答案 1 :(得分:1)
你可以使用这个功能:
Function GetArray(sht As Worksheet) ', uselessRows As Long)
With sht
GetArray = .Range(.Columns(1).Find(what:="Identifier", lookat:=xlWhole, LookIn:=xlValues), _
.Cells(.UsedRange.Rows(.UsedRange.Rows.Count).Row - 6, 29)).Value
End With
End Function
并在主要子组中将其称为:
WBArray = GetArray(mySht)
其中mySht
是任何有效的工作表参考,例如ActiveSheet