首页 > 解决方案 > Excel VBA在搜索时显示多个结果

问题描述

我有一个完整的数据表,如果我可以搜索我需要的数据会更容易。

就像一个 SQL 查询:

SELECT * FROM table_name WHERE Name='test'

所以我发现这个脚本部分适用于我的情况。

Sub Zoek()

Dim erow As Long
Dim ws As Worksheet
Dim Lastrow As Long
Dim count As Integer
Dim resultrow As Integer

resultrow = 11

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

count = 0
For x = 5 To Lastrow
    If Sheets("Klanten").Cells(x, 2) = Sheet1.Range("C6") Then
        Sheet1.Range("C11") = Sheets("Klanten").Cells(x, 1)
        Sheet1.Range("B11") = Sheets("Klanten").Cells(x, 2)
        Sheet1.Range("D11") = Sheets("Klanten").Cells(x, 11)
        count = count + 1
End If

Next x

End Sub

这段代码的问题在于,当同一个搜索查询多次出现时,它将被覆盖,并且只有该搜索的最后一次命中才会显示在单元格(B11、C11、D11)中。

我怎样才能使每场比赛都显示在 (B11 - Bxx, C11- Cxx, D11- Dxx) 中?

我知道这个问题之前可能已经被问过,但解决方案似乎很先进。

我是 VBA 的菜鸟,所以我不知道如何实施这些解决方案。

如果有人可以为我提供此代码的解决方案,我将不胜感激。

标签: excelvba

解决方案


因为你已经有了那个“count”变量:

For x = 5 To Lastrow
    If Sheets("Klanten").Cells(x, 2) = Sheet1.Range("C6") Then
        Sheet1.Range("C11").Offset(count) = Sheets("Klanten").Cells(x, 1)
        Sheet1.Range("B11").Offset(count) = Sheets("Klanten").Cells(x, 2)
        Sheet1.Range("D11").Offset(count)= Sheets("Klanten").Cells(x, 11)
        count = count + 1
    End If

Next x

推荐阅读