Excel VBA показывает несколько результатов при поиске - PullRequest
0 голосов
/ 24 февраля 2019

У меня есть лист данных, и мне будет проще найти нужные данные.

Как запрос 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, поэтому я не могу понять, как реализовать эти решения.

Буду признателен, если кто-нибудь сможет предоставить мне решение с помощью этого кода.

Ответы [ 2 ]

0 голосов
/ 24 февраля 2019

Поскольку у вас уже есть эта переменная «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
0 голосов
/ 24 февраля 2019

код ниже работает для вас.

 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 = 11
For x = 5 To Lastrow
If Sheets("Klanten").Cells(x, 2) = Sheet1.Range("C6") Then
    Sheet1.cells(count,1) = Sheets("Klanten").Cells(x, 1)
    Sheet1.cells(count,2) = Sheets("Klanten").Cells(x, 2)
    Sheet1.cells(count,11) = Sheets("Klanten").Cells(x, 11)
    count = count + 1
End If

Next x

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...