Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用VBA显示excel中的多个值_Excel_Vba_Worksheet - Fatal编程技术网

如何使用VBA显示excel中的多个值

如何使用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

我有一个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

        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