Новости:

Новая редакция правил форума: 2.4. Если вопрос или ответ содержится во вложенном файле, все-равно кратко описывайте в сообщении вопрос или суть решения. Это необходимо, чтобы тему можно было найти через поиск.

Главное меню

объединение данных в диапазоны

Автор witho, 15.03.2012, 09:47

« назад - далее »

witho

добрый день

проблема:
есть данные (текстовые или числовые), идущие последовательно в нескольких ячейках или в одной ячейке через запятую. необходимо их свести в диапазоны.

например, данные: 1, 2, 3, 5, 8, 9, 10
необходимый результат: 1-3, 5, 8-10

подскажите, как это сделать?

nilem

UDF для чисел
Function ConcNum$(r As Range)
Dim s$, x, i&, bu As Boolean
s = Replace(Join(Filter(Split("~" & Join(Application.Index(r.Value, 1, 0), "~|~") & _
                              "~", "|"), "~~", 0), ", "), "~", "") & ", 9E+307"
x = Split(s, ","): s = ""
For i = 0 To UBound(x) - 1
    s = s & ", " & Trim(x(i))
    Do While Val(x(i)) = Val(x(i + 1)) - 1
        bu = True: i = i + 1
    Loop
    If bu Then s = s & "-" & Trim(x(i)): bu = False
Next i
ConcNum = Mid(s, 3)
End Function


witho