Страницы: 1
RSS
Удаление строк с повторяющимися значениями в столбце с привязкой к заданному маркеру
 
Есть база данных. В первом столбце этой базы есть ячейки с уникальными и повторяющимися значениями. Во втором столбце прописаны маркеры для определенных ячеек первого столбца. Нужно оставить в первом столбце только уникальные данные в привязке к маркеру (Б) и удалить строки с маркером (И).
 
Хочу уточнить. С маркером (И) нужно удалить только те строки, в которых были дублирующие значения. Если с этим маркером строка с уникальным значением, то строка остается.
 
=ЕСЛИ(И("И"=D2;СЧЁТЕСЛИМН(C$1:C1;C2));"удалить";"не удалять")
 
Код
Public Sub www()
    Dim a, dc As Object, i&, n&
    Set dc = CreateObject("scripting.dictionary")
    n = 1
    With Range("c1:d" & Cells(Rows.Count, 3).End(xlUp).Row)
        a = .Value
        For i = 2 To UBound(a)
            If dc.exists(a(i, 1)) Then
                If a(i, 2) = "Б" Then
                    a(dc.Item(a(i, 1)), 2) = "Б"
                    dc.Item(a(i, 1)) = i
                End If
            Else
                n = n + 1
                dc.Item(a(i, 1)) = i
                a(n, 1) = a(i, 1): a(n, 2) = a(i, 2)
            End If
        Next
        .ClearContents
    End With
    [c2].Resize(n, 2) = a
End Sub
Я сам - дурнее всякого примера! ...
 
МатросНаЗебре, спасибо за формулу.

kuklp, протестировал макрос. В итоге все получилось как задумал. Спасибо.
Есть нюанс. Итоговая база съехала на одну строку вниз. Не понимаю почему.

Почему при использовании макроса нельзя сделать Отмену действия?
 
Подскажите, если строки будут заполнены больше чем на эти два столбца, то этот макрос будет работать?
 
Цитата
Anatolymk написал:
Почему при использовании макроса нельзя сделать Отмену действия?
Так устроен Excel. Не сохраняйте файл - всё вернётся в исходное состояние.

Цитата
Anatolymk написал:
если строки будут заполнены больше чем на эти два столбца, то этот макрос будет работать?
А взять, и проверить?
 
Цитата
Anatolymk написал: Итоговая база съехала на одну строку вниз.
исправьте:
Код
[c2].Resize(n, 2) = a

на
Код
[c1].Resize(n, 2) = a


Цитата
Anatolymk написал:
если строки будут заполнены больше чем на эти два столбца, то этот макрос будет работать?
Будет. Только с двумя столбцами. :D
Правила:
Цитата
2.3. Приложите файл(ы) с примером (общим весом не более 100 Кб) в реальной структуре и форматах данных того, что есть сейчас и того, что хотелось бы на выходе.
Я сам - дурнее всякого примера! ...
 
Спасибо. За ответы. Если есть возможность получить что-то универсальное не привязанное к заполненным данным. А то разные базы приходиться чистить.
 
удаление строк в большом Ексель файле DelRows - от ZVI
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Цитата
JeyCi написал: DelRows -
Спасибо. Изучу.
Страницы: 1
Наверх