Dim uniqueLetters As New Collection On Error Resume Next For Each Cell In Range("A1:A8") uniqueLetters.Add Cell.Value, Cell.Value Next Cell On Error GoTo 0
For i = 1 To uniqueLetters.Count Cells(i, "C") = uniqueLetters.Item(i) Next
[/vba]
Код подсчитывает количество и в соседнюю колонку выводит коллекцию уникальных значений
А как сделать, чтобы в следующей 3 колонке появлялось количество этих уникальных значений из первой колонки?
[vba]
Код
Dim uniqueLetters As New Collection On Error Resume Next For Each Cell In Range("A1:A8") uniqueLetters.Add Cell.Value, Cell.Value Next Cell On Error GoTo 0
For i = 1 To uniqueLetters.Count Cells(i, "C") = uniqueLetters.Item(i) Next
[/vba]
Код подсчитывает количество и в соседнюю колонку выводит коллекцию уникальных значений
А как сделать, чтобы в следующей 3 колонке появлялось количество этих уникальных значений из первой колонки?ant6729
For i = 1 To uniqueLetters.Count Cells(i, "B") = uniqueLetters.Item(i) Cells(i, "C").Value = WorksheetFunction.CountIf(Range("A1:A8"), uniqueLetters.Item(i)) Next
[/vba]
примерно так [vba]
Код
For i = 1 To uniqueLetters.Count Cells(i, "B") = uniqueLetters.Item(i) Cells(i, "C").Value = WorksheetFunction.CountIf(Range("A1:A8"), uniqueLetters.Item(i)) Next
Public Sub test() Dim oDict, arrKey Dim rowLast As Integer, i%
Set oDict = CreateObject("Scripting.Dictionary") oDict.CompareMode = 1 With ActiveSheet rowLast = .UsedRange.Row + .UsedRange.Rows.Count - 1 For i = 1 To rowLast If Not oDict.exists(.Cells(i, 1).Value) Then oDict.Add .Cells(i, 1).Value, 1 Else oDict.Item(.Cells(i, 1).Value) = oDict.Item(.Cells(i, 1).Value) + 1 End If Next i arrKey = oDict.keys()
For i = 0 To UBound(arrKey) .Cells(i + 1, 2) = arrKey(i) .Cells(i + 1, 3) = oDict.Item(arrKey(i)) Next i End With
End Sub
[/vba]
Ну так можно [vba]
Код
Public Sub test() Dim oDict, arrKey Dim rowLast As Integer, i%
Set oDict = CreateObject("Scripting.Dictionary") oDict.CompareMode = 1 With ActiveSheet rowLast = .UsedRange.Row + .UsedRange.Rows.Count - 1 For i = 1 To rowLast If Not oDict.exists(.Cells(i, 1).Value) Then oDict.Add .Cells(i, 1).Value, 1 Else oDict.Item(.Cells(i, 1).Value) = oDict.Item(.Cells(i, 1).Value) + 1 End If Next i arrKey = oDict.keys()
For i = 0 To UBound(arrKey) .Cells(i + 1, 2) = arrKey(i) .Cells(i + 1, 3) = oDict.Item(arrKey(i)) Next i End With
ant6729, добрый вечер,еще вариант,кнопки test и очистка
[vba]
Код
Sub test() Dim z, i&: z = Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row).Value With CreateObject("scripting.dictionary"): .CompareMode = 1 For i = 1 To UBound(z): .Item(z(i, 1)) = .Item(z(i, 1)) + 1: Next Range("B1").Resize(.Count, 2).Value = Application.Transpose(Array(.Keys, .items)) End With End Sub
[/vba]
ant6729, добрый вечер,еще вариант,кнопки test и очистка
[vba]
Код
Sub test() Dim z, i&: z = Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row).Value With CreateObject("scripting.dictionary"): .CompareMode = 1 For i = 1 To UBound(z): .Item(z(i, 1)) = .Item(z(i, 1)) + 1: Next Range("B1").Resize(.Count, 2).Value = Application.Transpose(Array(.Keys, .items)) End With End Sub