Скопируйте уникальный список на основе критериев в другом столбце vba excel

Я хочу использовать VBA для извлечения уникального упорядоченного списка с учетом условий в другом столбце. Итак, у меня есть две колонки A, B.

AB ======== a FALSE b FALSE c TRUE a TRUE b FALSE c TRUE 

Должен привести список

 C == a c 

Я очень, очень новичок в VBA, поэтому любая помощь будет оценена.

О, и второй список будет обновляться с каждым изменением первого, поэтому его нужно стереть, чтобы убедиться, что нет остатков, если, например, для второго «a» установлено значение FALSE.

Что ты думаешь об этом? Сначала добавьте библиотеку MS Scripting.

Вариант Явный

 Sub Test() Dim oRange As Range Dim dict As Dictionary Dim vArray As Variant Dim vItem As Variant Dim sKey As String Dim sValue As String Dim iCompare_TRUE As Integer Dim lCnt As Long Dim lCnt_Rows As Long Set dict = New Dictionary Set oRange = ThisWorkbook.Sheets(1).Range("A1:B6") For lCnt = 1 To oRange.Rows.Count sKey = oRange(lCnt, 1) sValue = oRange(lCnt, 2) iCompare_TRUE = StrComp(sValue, "True") If Not dict.exists(sKey) And iCompare_TRUE = 0 Then With dict .Add sKey, sValue End With End If Next lCnt ReDim vArray(1 To dict.Count) vArray = dict.Keys lCnt_Rows = UBound(vArray) + 1 Set oRange = ThisWorkbook.Sheets(1).Range(Cells(1, 3), Cells(lCnt_Rows, 3)) oRange.Value = Application.Transpose(vArray) End Sub 

Вот только формула-подход. Является ли это практическим, зависит от ваших обстоятельств, но я проверил его с образцом данных, подобным тому, который был в исходном вопросе:

  1. Вставьте пустую строку в верхней части таблицы, чтобы она служила в качестве строки заголовка.
  2. Создайте новый столбец формулы, который будет перечислять элементы столбца «A», только если столбец «B» равен true. Например, поместите следующую формулу в ячейку D2, затем скопируйте ее: =IF(B2,A2,"") .
  3. Теперь вы можете применить технику, описанную на второй странице, связанную с t.thielemans выше.

Одним из потенциальных недостатков этого подхода является то, что пустые ячейки, возвращаемые формулой, когда столбец B является «ЛОЖНЫМ», не исчезают – у вас все равно будет пустой результат в отфильтрованном виде.

Я скопирую ссылку здесь для удобства: получение уникальных значений в Excel с использованием только формул

Interesting Posts

как удалить дублирующийся контент и скопировать значение в последнем столбце в excel

Если утверждения с копируемой формулой в выводе

Столбец форматирования в Excel с использованием EPPlus Lib C # .Net

R NoSuchMethodError (Java) при записи на рабочий лист MS Excel с помощью XLConnect

Пользовательский URL для импорта документов в iPad Excel

Можно использовать диапазон значений ячейки Excel как координаты x и y для управления диаграммой VB.NET?

Удаление всей строки по критериям не может обрабатывать 400 000 строк

Диапазон изменения размера таблицы

Сравнение значений двух разных столбцов с уникальным условием

Просмотр части большого CSV-файла?

Как получить максимальную сумму строк в формуле Excel?

Настройка строки подключения ODBC в VBA

Excel – Index / Match возвращает 0 для пробелов, хочет пропустить пробелы

Как изменить строку user-agent в веб-кадре Excel?

Использование VBA Excel для создания Scatter Plot

Давайте будем гением компьютера.