Добрый день! Подскажите, пожалуйста. В файл выгружаются данные по подразделениям. Как можно получить макросом список уникальных подразделений, но с учетом, если в наименовании подразделения есть подчеркивание, то брать только часть до подчеркивания?
Добрый день! Подскажите, пожалуйста. В файл выгружаются данные по подразделениям. Как можно получить макросом список уникальных подразделений, но с учетом, если в наименовании подразделения есть подчеркивание, то брать только часть до подчеркивания?barina
Sub ttt() Dim rng As Range, cell As Range Set rng = Range("b2:b" & Cells(Rows.Count, 2).End(xlUp).Row) With CreateObject("Scripting.Dictionary"): .CompareMode = vbTextCompare For Each cell In rng If Split(cell, "_")(0) <> "" Then .Item(Split(cell, "_")(0)) = .Item(Split(cell, "_")(0)) + 1 Next Range("d2:d" & Cells(Rows.Count, 4).End(xlUp).Row).ClearContents Range("d2:d" & .Count + 1).Value = Application.WorksheetFunction.Transpose(.keys) End With End Sub
[/vba]
barina, так подойдет? [vba]
Код
Sub ttt() Dim rng As Range, cell As Range Set rng = Range("b2:b" & Cells(Rows.Count, 2).End(xlUp).Row) With CreateObject("Scripting.Dictionary"): .CompareMode = vbTextCompare For Each cell In rng If Split(cell, "_")(0) <> "" Then .Item(Split(cell, "_")(0)) = .Item(Split(cell, "_")(0)) + 1 Next Range("d2:d" & Cells(Rows.Count, 4).End(xlUp).Row).ClearContents Range("d2:d" & .Count + 1).Value = Application.WorksheetFunction.Transpose(.keys) End With End Sub
Sub мяу() Dim arr, i& arr = Range(Cells(2, 2), Cells(Rows.Count, 2).End(xlUp)).Value With CreateObject("Scripting.Dictionary") For i = 1 To UBound(arr) .Item(Split(arr(i, 1), "_")(0)) = 1 Next Cells(2, "F").Resize(.Count) = Application.Transpose(.keys) End With End Sub
[/vba]
[vba]
Код
Sub мяу() Dim arr, i& arr = Range(Cells(2, 2), Cells(Rows.Count, 2).End(xlUp)).Value With CreateObject("Scripting.Dictionary") For i = 1 To UBound(arr) .Item(Split(arr(i, 1), "_")(0)) = 1 Next Cells(2, "F").Resize(.Count) = Application.Transpose(.keys) End With End Sub