Страницы: 1
RSS
Нумерация повторяющихся значений в списке
 
Есть столбец с данными, которые могу повторяться несколько раз в разных строках этого столбца. Необходимо создать столбец в котором будет по порядку нумероваться значения. Т.е. напротив каждого следующего повторения значения должно появляться количественное значение числа повторений.

а 1
а 2
б 1
б 2
б 3
б 4
в 1
г 1
г 2
г 3
или
а1
б 1
б 2
в 1
г 1
г 2
г 3
а 2
б 3
б 4
 
Цитата
konstantan написал: должно появляться количественное значение числа повторений.
И что - СЧЕТЕСЛИ() бессилен?
ps Правила пп 2.2, 2.3
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
Код
=СЧЁТЕСЛИ($A$1:A1;A1)
Согласие есть продукт при полном непротивлении сторон
 
Спасибо, помогло! Но я думал, это как то через циклы VBA делается=)
 
Надо? Делается.
 
Конечно надо!
я пробовал реализовать это так...
Код
Sub test()

For i = 1 To 4
    For j = 1 To 10
        If Cells(i, 3) = Cells(j, 2) Then
        'тут как то должно присваиваться значение ячейке Cells(j,1)
        'равное числу повторений
    Next j
Next i

End Sub
 
См. сообщение №2
 
konstantan, используйте словарь, где ключ - это значение, а значение ключа - это счётчик повторений.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Вариант с коллекцией:
Код
Sub Macro1()
Dim LastRow As Long, i As Long, Uniq As New Collection, Counter As Long, Arr(), sValue
    LastRow = Cells(Rows.Count, 2).End(xlUp).Row
    Arr = Range(Cells(2, 2), Cells(LastRow, 3)).Value
    For i = 1 To UBound(Arr)
        On Error Resume Next
        Uniq.Add Arr(i, 1), CStr(Arr(i, 1))
    Next
    For Each sValue In Uniq
        For i = 1 To UBound(Arr)
            If Arr(i, 1) = sValue Then
                Counter = Counter + 1
                Arr(i, 2) = Counter
            End If
        Next
        Counter = 0
    Next
    Range("B2").Resize(UBound(Arr), 2).Value = Arr
End Sub
 
спасибо!
Страницы: 1
Наверх