我需要确定Ledger帐户中的股息收入行。以下是从GROUP BY
开始的数据:
Column A Cell A1
最终我想在一个数组中放入股息收入行中的相邻数据(即偏移1,2,3个单元格等)。
这就是我所拥有的 - 如何在确定合适的列(Ledger Account)后修改向下搜索的方向,并将值存储在数组中的第5行(Dividend Income行)中?
Ledger Account
Prior Shares Outstanding
Current Shares Outstanding
Current Share Activity
Dividend Income
答案 0 :(得分:1)
这是你在尝试什么?我已对代码进行了评论,因此您无法理解它。但如果你仍然这样做,那么就问:)
Sub Sample()
Dim ws As Worksheet
Dim MyAr As Variant
Dim SearchString As String
Dim aCell As Range
Dim i As Long
SearchString = "Ledger Account"
'~~> Change this as applicable
Set ws = ThisWorkbook.Sheets("Sheet1")
With ws
Set aCell = .Columns(1).Find(What:=SearchString, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
If Not aCell Is Nothing Then
'~~> 5 Denotes the 5th column i.e Column "E"
'~~> Amend as applicable
'~~> Store the values From say Col B to E in the array
MyAr = Application.Transpose( _
.Range(.Cells(aCell.Row, 2), _
.Cells(aCell.Row, 5) _
).Value _
)
'~~> Check what is in the array
For i = LBound(MyAr) To UBound(MyAr)
Debug.Print MyAr(i, 1)
Next i
End If
End With
End Sub
答案 1 :(得分:0)
这就是将Dividend Income行中的值变为数组所需的全部内容:
v
通过上述内容,v(1, 1)
成为一个二维数组,其中包含该行的所有值。例如,v(1, 2)
包含'股息收入'并且Public Sub Sample()
Dim v
On Error Resume Next
v = [index(a:a,match("dividend income",a:a,))].EntireRow
If Err Then MsgBox "No match."
End Sub
包含紧邻右侧的值,依此类推。
这是一种有效的方法。一个变量(这是你想要的数组),只有一个调用跨越Excel和VBA之间的边界。
以上主要关注如何获取数组。当然,在实践中,应该考虑到找不到搜索文本的情况,因此这个版本会这样做:
{{1}}