1

У меня есть большой файл Excel с тысячами строк, содержащих данные испытаний из. Я отсортировал их по идентификаторам в столбцах, и я пытаюсь выяснить, какие повторные тесты были выполнены.

Есть 5 столбцов, содержащих данные, которые мне нужны для каждой строки. Может ли кто-нибудь помочь мне написать макрос VBA, чтобы найти строки с уникальными комбинациями этих тестов и создать список различных комбинаций, представленных на листе? В идеале я хотел бы, чтобы этот список отображался на отдельном листе.

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

Я играл с функциями сцепления, но поскольку в некоторых столбцах отсутствуют данные, он не выполняет то, что мне нужно. Я приложил код, который я пытался изменить, который я нашел в другом посте здесь. У меня возникают проблемы с оператором If в конце (я даже не думаю, что он будет делать то, что я хочу), потому что я получаю ошибку несоответствия типов. Я новичок в VBA, поэтому у меня много проблем.

Спасибо!!

Sub GetCombinations()

Dim sheet1, sheet2 As Worksheet
Set sheet1 = Worksheets("Data")
Set sheet2 = Worksheets("Sort")

Dim sStartColumn As String
Dim iTopRow As Long
Dim sEndColumn As String
Dim iBottomRow As Long

sStartColumn = "AS"
iTopRow = 6
sEndColumn = "AU"
iBottomRow = sheet1.UsedRange.Rows.Count

Dim Rng As Range
Dim sRange1 As String
sRange1 = sStartColumn & CStr(iTopRow) & ":" & sEndColumn & CStr(iBottomRow)

Set Rng = sheet1.Range(sRange1)


Rng.Sort Key1:=Range("AS6"), Order1:=xlAscending, _
         Key2:=Range("AU1203"), Order2:=xlAscending, _
         Orientation:=xlSortColumns, Header:=xlYes

Dim j As Integer
Dim i As Integer


j = 2

For i = 7 To iBottomRow

    If sheet1.Cells(i, 45) Then

        sheet2.Cells(j, 1) = sheet1.Cells(i, 1)
        sheet2.Cells(j, 2) = sheet1.Cells(i, 2)
        sheet2.Cells(j, 3) = sheet1.Cells(i, 5)
        j = j + 1

    End If

Next i

End Sub

1 ответ1

1

ПОДХОД:

  1. добавить столбец, который для каждой строки содержит объединение 5 столбцов
  2. заставить код работать снизу вверх, ища дубликаты в новом столбце

Скажем, данные похожи на:

В F1 введите:

=A1 & CHAR(1) & B1 & CHAR(1) & C1 & CHAR(1) & D1 & CHAR(1) & E1

и скопировать вниз. затем запустите:

Sub De_Dup()
    Dim i As Long, N As Long, wf As WorksheetFunction
    Dim r1 As Range, r2 As Range

    N = Cells(Rows.Count, "F").End(xlUp).Row
    Set wf = Application.WorksheetFunction

    For i = N To 2 Step -1
        Set r1 = Cells(i, "F")
        Set r2 = Range(Range("F1"), Cells(i - 1, "F"))
        If wf.CountIf(r2, r1.Value) > 0 Then r1.EntireRow.Delete
    Next i
End Sub

заканчивая с:

Вам даже не нужно сначала сортировать данные!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .