Страницы: 1
RSS
Найти номера повторяющихся строк по ключу
 
Здравствуйте! Несколько дней ищу решение и нигде не могу найти. Прошу помощи.
Нужно извлечь номера строк повторяющихся значений из столбца. Нужны только индексы.
К примеру, в столбце A есть данные:

стул
стол
кровать
стол
потолок
кровать
стол
шкаф

Мне нужно извлечь номера повторяющихся строк по ключу "стол". Т.е. в столбце B было бы 2, 4, 7
Пробовал ПОИСКПОЗ, но он показывает номер строки только первого совпадения, а мне нужно что-то вроде массива, пока повторения по ключу не закончатся. Как это можно реализовать? Файл прикрепляю.
Изменено: Fedor_fedorov - 16.05.2021 21:47:17
 
Fedor_fedorov,
массивная (наверное для вске версий)
Код
=ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ($A$1:$A$8="стол";СТРОКА($A$1:$A$8));СТРОКА());"")
для чуть новее версий где есть АГРЕГАТ
Код
=ЕСЛИОШИБКА(АГРЕГАТ(15;6;СТРОКА($A$1:$A$8)/($A$1:$A$8="стол");СТРОКА());"")
Изменено: Mershik - 16.05.2021 21:54:12
Не бойтесь совершенства. Вам его не достичь.
 
Премного благодарствую. Всё работает, взял второй вариант на вооружение. Спасибо!  :D  
 
Цитата
извлечь номера строк повторяющихся значений из столбца
Макрос извлекает в столбец В уникальные предметы, а в столбец С номера строк, где они встречаются
Код
Sub subject_row()
Dim arr
Dim dic As Object
Dim i As Long
Dim iLastRow As Long
    iLastRow = Cells(Rows.Count, "A").End(xlUp).Row
     Range("B1:C" & iLastRow).ClearContents
     Set dic = CreateObject("Scripting.Dictionary"): dic.comparemode = 1
     arr = Range("A1:A" & iLastRow).Value
  For i = 1 To UBound(arr)
    dic.Item(arr(i, 1)) = dic.Item(arr(i, 1)) & i & ","
  Next i
   Range("B1").Resize(dic.Count, 2) = Application.Transpose(Array(dic.keys, dic.Items))
End Sub
 
Или так
Страницы: 1
Наверх