VBA извлекает уникальные значения с помощью расширенного фильтра от одного рабочего листа к другому - PullRequest
0 голосов
/ 06 августа 2020

Итак, у меня эта рабочая тетрадь содержит несколько рабочих листов.
В Sheet22 есть база данных, и мне нужно извлечь уникальные значения из одного из ее столбцов, которым является столбец «B C» (или столбец 55). вот чтобы проиллюстрировать уникальные значения, которые я хочу извлечь:
столбец, из которого я хочу извлечь уникальные значения
Мне нужно извлечь уникальные значения на другой рабочий лист (лист 32), начиная с диапазона A1. Но перед этим мне нужно сначала очистить целевой диапазон, если он не пустой, а затем вставить уникальные значения.


, так что это коды, которые я использовал, (ну, я, все еще новичок в VBA, поэтому я обнаружил, что этот код наиболее близок к тому, что я задумал, и изменил его):

Option Explicit

Sub uniqueValuesFromRangeCustomer()

    Dim rngCollectFrom As Range, targetRange As Range
    Dim lastRow As Long
    Dim sh As Worksheet

    Set sh = ThisWorkbook.Sheets("Sheet22")

    'Set the target range where the unique values will be copied to
    Set targetRange = Sheets("Sheet32").Range("A1")

    'Clear the target range if it is not empty
    If targetRange <> vbNullString Then
        'Find last row in target range column
        lastRow = Sheets("Sheet32").Columns(targetRange.Column).Find("*", , , , xlByRows, xlPrevious).Row
        'Delete target range
        Sheets("Sheet32").Range(targetRange, Cells(lastRow, targetRange.Column)).Delete xlUp
        'Reset target range (since it gets deleted)
        Set targetRange = Sheets("Sheet32").Range("A1")
    End If

    'Define the range the unique values will be extracted from
    'Find last row
    lastRow = Sheets("Sheet22").Columns(55).Find("*", , , , xlByRows, xlPrevious).Row
    'Set the source range
    Set rngCollectFrom = Sheets("Sheet22").Range(Cells(2, 55), Cells(lastRow, 55))

    'Use Advanced Filter
    rngCollectFrom.AdvancedFilter Action:=xlFilterCopy, copytorange:=targetRange, unique:=True

Когда я запускаю код, я получаю сообщение об ошибке: «Индекс вне допустимого диапазона ", и когда я отлаживаю, он выделяет код:

Set sh: ThisWorkbook.Sheets("Sheet22")

Я до сих пор не понимаю, как изменить этот код, чтобы он работал, пожалуйста, кто-нибудь может помочь мне с этой проблемой. Спасибо!

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