Створення списку унікальних комбінацій на аркуші


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

Кінець Під


Вибачте з цього приводу, перший раз плакат! Але так, це Microsoft Excel.
Сара

Замість того, щоб задавати купу питань щодо можливих варіантів у макеті даних, це, звичайно, зробило б це набагато простіше, як тільки ви опублікували зразок даних та очікувані результати після запуску макросу.
Рон Розенфельд

Відповіді:


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

закінчується:

введіть тут опис зображення

Вам навіть не потрібно спочатку сортувати дані!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.