Найти подходящую строку с помощью VLookup, а затем вернуть столбцы по индексу строки - PullRequest
0 голосов
/ 03 июня 2019

Создание более раннего вопроса StackOverflow, который я опубликовал: Индексирование по строке в столбце и поиск частичных совпадений в строке

Я создаю вариант этого, но там, где строка соответствует -Например, скопируйте всю строку (A1: C1) и вставьте в следующую пустую строку строки на новом листе.

Sub PeopleFilter()
' Defining Workbook and Worksheets to be used
Dim PeopleWorkbook As Workbook
Dim People As Worksheet
Dim UnitedKingdom, UnitedStates, Canada As Worksheet
' Letting our Variables equal something
Set PeopleWorkbook = ActiveWorkbook
Set People = PeopleWorkbook.Worksheets("People")
Set UnitedKingdom = PeopleWorkbook.Worksheets("United Kingdom")
Set UnitedStates = PeopleWorkbook.Worksheets("United States")
Set Canada = PeopleWorkbook.Worksheets("Canada")
' Defining ranges
Dim PeopleDataRange As Range
' C1 is cell 1 - C2, cell 2
Dim C1 As Range
Dim C2 As Range
' Equating C1 to the cell that is at the 2nd row first column
' Equating C2 to the cell that is at the last row position first column
Set C1 = People.Cells(2, 1)
Set C2 = People.Cells(People.UsedRange.Rows.Count, 1)
' Creating a range out of these two cells
Set PeopleDataRange = People.Range(C1, C2)
' Printing length of Range
Debug.Print PeopleDataRange.Count
' For each row
Dim ThisWorks As Boolean

For Each c In PeopleDataRange.Rows
        If People.Rows(c, 2).Value = "United States" Then
            ThisWorks = True
        Else
            ThisWorks = False
        End If
Next c
End Sub

В настоящее время я просто отлаживаю это - вот почему он фактически ничего не делает, кроме изменения значения логического значения.Я получаю сообщение об ошибке на

Если People.Rows (c, 2) .Value = "United States", то код ошибки: 1004 - ошибка, определенная приложением или объектом

Рабочий процесс должен иметь видследует - Индексировать по столбцу в поисках конкретного совпадения строк, когда он найден - скопировать выборку столбцов.

IE Если в строке 35 найдено совпадение строк - вернуть строку 35 столбца A, b, c, d ... на новый лист.

Основные данные

Лист для вставки данных

* Редактировать - ожидаемые результаты должныбыть, как цикл повторяется каждый раз - логическое значение должно стать истинным, когда значение соответствует поиску

1: True 2: False 3: True 4: False 5: False 6: False *

1 Ответ

1 голос
/ 03 июня 2019

c - это не номер строки, а диапазон, содержащий ячейку в столбце А. Вам необходимо обратиться к строке:

If People.cells(c.row, 2).Value = "United States" Then
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...