Как удалить повторяющиеся значения (#не удалять повторяющиеся значения#) в столбце excel?

у меня есть следующие два столбца данных:

Location    Value
    A         1
    A         1
    B         2
    C         2
    D         3
    D         3
    E         4
    E         4
    F         5
    G         5

если существует повторяющаяся комбинация Location и Value, он должен быть удален. Если я использую опцию Удалить дубликат, дубликаты удаляются, но сохраняют одно из повторяющихся значений, и это не выгодно для меня. Мой предполагаемый результат таков:

Location    Value
    B         2
    C         2
    F         5
    G         5

вот что я думал и пробовал до сих пор:

Я объединил два столбца, а затем использовал COUNTIF получить счет сколько раз это значение повторяется. Затем я могу отфильтровать столбец count, рассматривая только счетчики, равные 1. Это показано здесь:

My method

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

есть ли другие предложения для достижения тех же результатов, что и у меня?

13
задан Achyutha Mohan
25.02.2023 10:00 Количество просмотров материала 3659
Распечатать страницу

1 ответ

использование VBA:

Public Function allDuplicates()
    Dim a As Application
    Set a = Application
    Dim arrayRows() As Boolean
    maxCol = 2
    firstRow = 2
    Dim wks As Worksheet
    Set wks = ActiveSheet
    wks.Application.ScreenUpdating = False
    totalRows = wks.Cells(Rows.Count, "A").End(xlUp).Row
    ReDim arrayRows(totalRows)
    For i = firstRow To totalRows
        theRow = Join(a.Transpose(a.Transpose(wks.Range(Cells(i, 1), Cells(i, maxCol)))), Chr(0))
        For j = i + 1 To totalRows
            theOtherRow = Join(a.Transpose(a.Transpose(wks.Range(Cells(j, 1), Cells(j, maxCol)))), Chr(0))
            If theRow = theOtherRow Then
                arrayRows(i) = True
                arrayRows(j) = True
            End If
        Next j
    Next i
    For i = firstRow To totalRows
        If arrayRows(i) = True Then
            wks.Rows(i).Clear
        End If
    Next i
    Range("A1:B" & totalRows).Sort key1:=Range("A2:A" & totalRows), order1:=xlAscending, Header:=xlYes
    wks.Application.ScreenUpdating = True
    Message = MsgBox("Finished", vbInformation)
End Function

откройте Visual Basic / Macros, добавьте модуль в ThisWorkbook, вставьте код справа и выполните его.

0
отвечен jcbermu 2023-02-26 17:48

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя

Похожие вопросы про тегам:

microsoft-excel
microsoft-excel-2007
microsoft-excel-2010
microsoft-excel-2013
worksheet-function
Вверх