1

Мне нужно найти дубликаты в столбце B; а затем удалите всю строку, если значение в столбце A является числом 4. Есть строки, которые необходимо сохранить и иметь "4" в столбце А.

A  B
1, John
4, John
1, Mary
4, Mary
1, Aaron
1, Scott
4, Jeff
4, Bob

Должно получиться так, когда я закончу:

A  B
1, John
1, Mary
1, Aaron
1, Scott
4, Jeff
4, Bob

2 ответа2

1

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

Sub RemoveRows()
    Dim rng1 As Range, sht1 As Worksheet
    Dim iRow As Long

    'Change sheet name and top-left cell address to match your data.
    Set sht1 = Sheets("Sheet1")
    Set rng1 = sht1.Range("A1")

    For iRow = rng1.End(xlDown).Row To rng1.Row Step -1
        If Cells(iRow, 1) = 4 Then
            If Application.WorksheetFunction.CountIf(rng1.Resize(rng1.End(xlDown).Row, 1).Offset(0, 1), Cells(iRow, 2)) > 1 Then
                Cells(iRow, 1).EntireRow.Delete
            End If
        End If
    Next iRow
End Sub
1

С помощью вспомогательного столбца и сводной таблицы я смог получить желаемый результат. Я предположил, что единственными значениями в столбце A могут быть 1 или 4. (Может быть, это плохое предположение ???)

В С1 я поместил имя столбца "nameID".

В С2 я поставил значение 1.

В C3 я поместил эту формулу и скопировал ее полностью:

 =IF(B3=B2,C2,C2+1) 

Затем я развернул данные в столбцах A:C, выбрав "min" из "a":

Наконец, рядом с сводной таблицей я написал следующую формулу конкатенации, предполагая, что первой сводной ячейкой является F3:

 =H3 & ", " & G3

Может быть, этот скриншот может помочь уточнить. Окончательный результат в столбце J:

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