Прочитайте про функцию СЧЁТЕСЛИ() и увеличьте диапазон $A$1:$A$12 до нужного, или можно включить в формулу весь столбец, вместо $A$1:$A$12 записать A:A. Не ограниченный строками диапазон увеличивает время расчета формулы. При малом количестве данных это не заметно, при большом количестве может зависать работа компа.
Прочитайте про функцию СЧЁТЕСЛИ() и увеличьте диапазон $A$1:$A$12 до нужного, или можно включить в формулу весь столбец, вместо $A$1:$A$12 записать A:A. Не ограниченный строками диапазон увеличивает время расчета формулы. При малом количестве данных это не заметно, при большом количестве может зависать работа компа.gling
ЯД-41001506838083
Сообщение отредактировал gling - Воскресенье, 04.02.2018, 20:12
Я потестировал формулу из поста 2. На моем компе тормозит. Для формулы из поста 3 надо прокручивать весь лист, чтобы искать повторы. Поэтому предлагаю использовать макрос. Макрос вставляет результат в столбец "C". Старые данные в столбце "C" не удаляются, поэтому предполагается, что столбец "C" будет пустым перед запуском макроса.
[vba]
Код
Sub Найти_дубли()
Dim collA As New Collection, arrB(), collRes As New Collection Dim arr(), lr As Long, i As Long
lr = Cells(Rows.Count, "A").End(xlUp).Row arr() = Range("A1:A" & lr).Value On Error Resume Next For i = 2 To UBound(arr) collA.Add Item:="", key:=CStr(arr(i, 1)) Next i On Error GoTo 0
lr = Cells(Rows.Count, "B").End(xlUp).Row arrB() = Range("B1:B" & lr).Value
On Error Resume Next For i = 2 To UBound(arrB) If collA(CStr(arrB(i, 1))) = "" Then End If If Err.Number = 0 Then collRes.Add Item:=arrB(i, 1), key:=CStr(arrB(i, 1)) If Err.Number <> 0 Then Err.Number = 0 End If Else Err.Number = 0 End If Next i On Error GoTo 0
If collRes.Count = 0 Then MsgBox "Готово!", vbInformation Exit Sub End If
ReDim arr(1 To collRes.Count, 1 To 1) For i = 1 To collRes.Count arr(i, 1) = collRes(i) Next i Range("C2").Resize(UBound(arr)).Value = arr() MsgBox "Готово!", vbInformation
End Sub
[/vba]
Я потестировал формулу из поста 2. На моем компе тормозит. Для формулы из поста 3 надо прокручивать весь лист, чтобы искать повторы. Поэтому предлагаю использовать макрос. Макрос вставляет результат в столбец "C". Старые данные в столбце "C" не удаляются, поэтому предполагается, что столбец "C" будет пустым перед запуском макроса.
[vba]
Код
Sub Найти_дубли()
Dim collA As New Collection, arrB(), collRes As New Collection Dim arr(), lr As Long, i As Long
lr = Cells(Rows.Count, "A").End(xlUp).Row arr() = Range("A1:A" & lr).Value On Error Resume Next For i = 2 To UBound(arr) collA.Add Item:="", key:=CStr(arr(i, 1)) Next i On Error GoTo 0
lr = Cells(Rows.Count, "B").End(xlUp).Row arrB() = Range("B1:B" & lr).Value
On Error Resume Next For i = 2 To UBound(arrB) If collA(CStr(arrB(i, 1))) = "" Then End If If Err.Number = 0 Then collRes.Add Item:=arrB(i, 1), key:=CStr(arrB(i, 1)) If Err.Number <> 0 Then Err.Number = 0 End If Else Err.Number = 0 End If Next i On Error GoTo 0
If collRes.Count = 0 Then MsgBox "Готово!", vbInformation Exit Sub End If
ReDim arr(1 To collRes.Count, 1 To 1) For i = 1 To collRes.Count arr(i, 1) = collRes(i) Next i Range("C2").Resize(UBound(arr)).Value = arr() MsgBox "Готово!", vbInformation
Макрос работает с активным листом (это лист, который Вы видите на экране). Перейдите на лист, который надо обработать, запустите макрос, ждите, когда появится сообщение "Готово". Как запускать макросы, смотрите в интернете. Если не найдете, то поищите на форуме, если снова не найдете, то создайте новую тему про запуск макросов.
Макрос работает с активным листом (это лист, который Вы видите на экране). Перейдите на лист, который надо обработать, запустите макрос, ждите, когда появится сообщение "Готово". Как запускать макросы, смотрите в интернете. Если не найдете, то поищите на форуме, если снова не найдете, то создайте новую тему про запуск макросов.Karataev