如何使用VBA显示excel中的多个值
我有一个excel文件,它使用VBA来搜索我的数据表并显示其中显示的数据。 问题是它只返回一个值。 我不明白为什么它只返回一个值。我需要它显示具有特定ID值的所有行如何使用VBA显示excel中的多个值,excel,vba,worksheet,Excel,Vba,Worksheet,我有一个excel文件,它使用VBA来搜索我的数据表并显示其中显示的数据。 问题是它只返回一个值。 我不明白为什么它只返回一个值。我需要它显示具有特定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
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
该代码将生成:
以下结果
@Naveen解决方案将产生:
您正在将其写入同一行,即11,这就是它在被覆盖时返回单行的原因 您可以为Sheet3再创建一个变量Y,然后在以下条件下增加它:
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
请注意,Sheet3.RangeA11=SheetsData.CellsX,1这将始终写入A11,因此您可能也需要使其动态,否则它将在循环的下一次迭代中覆盖值。你的问题有点不清楚。在if中添加一个计数器,并在赋值前将其递增到下一行。我在实现这一点时遇到了一些问题。你能不能让我更清楚地了解一下我如何正确地实现这一点?请回答这个问题。我已经添加了一个图片,说明您的代码所做的事情,但不是100%正确。应在项目最初填写的位置填写项目。将y=2更改为y=11