如何使用VBA从excel显示多个值

问题描述 投票:0回答:1

我有一个使用VBA的excel文件,以便搜索我的数据表并显示其上显示的数据。问题在于它只会返回一个值。我不明白为什么它只会返回一个值。我需要它来显示具有特定ID值的所有行。

Sub Searchdata()
    Dim Lastrow As Long
    Dim count As Integer


    Lastrow = Sheets("Data").Cells(Rows.count, 1).End(xlUp).Row

    For X = 2 To Lastrow

        If Sheets("Data").Cells(X, 1) = Sheet3.Range("B3") Then
            Sheet3.Range("A11") = Sheets("Data").Cells(X, 1)
            Sheet3.Range("B11") = Sheets("Data").Cells(X, 2)
            Sheet3.Range("C11") = Sheets("Data").Cells(X, 3) & " " & Sheets("data").Cells(X, 4) _
                                & " " & Sheets("data").Cells(X, 5) & " " & Sheets("Data").Cells(X, 6)
            Sheet3.Range("D11") = Sheets("Data").Cells(X, 7)
        End If
    Next X

End Sub




Sub PrintOut()
    Sheet3.Range("A1:D12").PrintPreview
    Sheet3.Range("A1:D12").PrintOut
End Sub

此代码将产生:以下结果

enter image description here

@ Naveen解决方案将产生:

enter image description here

excel vba worksheet
1个回答
1
投票

您正在将其写入同一行,即11,这就是为什么它被覆盖时返回单行的原因。

您可以为Sheet3再创建一个变量Y,然后在IF条件下将其递增:

Sub Searchdata()
Dim Lastrow As Long
Dim count As Integer
Lastrow = Sheets("Data").Cells(Rows.count, 1).End(xlUp).Row
Y=11
For X = 2 To Lastrow
    If Sheets("Data").Cells(X, 1) = Sheet3.Range("B3") Then
       Sheet3.Cells(Y,"A") = Sheets("Data").Cells(X, 1)
       Sheet3.Cells(Y,"B") = Sheets("Data").Cells(X, 2)
       Sheet3.Cells(Y,"C") = Sheets("Data").Cells(X, 3) & " " & Sheets("data").Cells(X, 4) _
                                & " " & Sheets("data").Cells(X, 5) & " " & Sheets("Data").Cells(X, 6)
       Sheet3.Cells(Y,"D") = Sheets("Data").Cells(X, 7)
       Y = Y + 1
    End IF
Next X
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.