如何使用.EntireRow转置数组?

时间:2014-10-06 15:49:36

标签: arrays vba excel-vba range transpose

我有以下数据存储从搜索功能中找到的值。

If FoundCells Is Nothing Then
    Debug.Print "Value Not Found"
    Else
    For Each FoundCell In FoundCells
    Array1(i) = FoundCell.Value    'Instead of .Value I can use .Row but .EntireRow doesn't work
    i = i + 1
    Next FoundCell
    j = i - 1
    i = 1
End If

然后我使用transpose从数组中提取数据,该转置适用于' .Value'和' .Row'但是我无法通过' .EntireRow'从每个找到的值中提取整行。

Range("A1:A" & UBound(Array1) + 1) = WorksheetFunction.Transpose(Array1)

我试图以多种方式改变范围,但似乎没有任何东西符合.EntireRow标准。

在loannis评论后更新:

如何根据存储在FoundCell中的搜索结果,在我的数组中使用EntireRow将所有行转置到目标位置?

我正在使用cpearson http://www.cpearson.com/excel/findall.aspx

中的FindAll搜索功能

2 个答案:

答案 0 :(得分:0)

你可以像这样提取整行,但它是一个二维数组。

Sub MethodName()
    Dim Array1
    'Get all the cell values in row A
    Array1 = Cells(1, 1).EntireRow
    Dim i As Integer
    'loop through the array and output the contents to the 2nd row
    For i = 1 To UBound(Array1, 2)
        Cells(2, i).Value = Array1(1, i)
    Next i
End Sub

答案 1 :(得分:0)

我得出的结论是,为了达到这个目的,我不妨废弃数组并按照这样做:

If FoundCells Is Nothing Then
    Debug.Print "Value Not Found"
    Else
    For Each FoundCell In FoundCells
    FoundCell.EntireRow.Copy Worksheets("Sheet3").Range("A" &   Rows.Count).End(xlUp).Offset(1)
    Next FoundCell

End If