Страницы: 1
RSS
Объединение последовательных чисел в диапазон
 
Здравствуйте. Есть столбец с большим количеством цифр, некоторые из них идут последовательно с шагом 1. Нужно что последовательные числа групировались в диапазон. Пример, дано столбец А, нужно чтобы было как в столбце С. Возможно посоветуете другие методы решения такой задачи, уровень владения екселем низкий.
 
Цитата
s_Fanatik написал:
уровень владения екселем низкий
зато вы знаете что такое снимок экрана.
По вопросам из тем форума, личку не читаю.
 
Доброе время суток
Цитата
БМВ написал:
зато вы знаете что такое снимок экрана.
Привет, Михаил.
Может ТС за одно и FineReader осваивает? Поддержу.
 
Андрей VG, Огромное спасибо, несмотря на подколы. Все получилось.
 
Цитата
другие методы решения такой задачи
Код
Sub iConcatenate()
Dim i As Long
Dim iLastRow As Long
Dim iLR As Long
Dim n As Long
 iLastRow = Cells(Rows.Count, "A").End(xlUp).Row
  iLR = 1
  For i = 1 To iLastRow
      n = i
    Do
     If Cells(n + 1, "A") = Cells(n, "A") + 1 Then
      n = n + 1
     End If
    Loop While Cells(n + 1, "A") = Cells(n, "A") + 1
    If n > i Then
      Cells(iLR, "B") = Cells(i, "A") & " - " & Cells(n, "A")
       iLR = Cells(Rows.Count, "B").End(xlUp).Row + 1
    Else
      Cells(iLR, "B") = Cells(i, "A")
       iLR = Cells(Rows.Count, "B").End(xlUp).Row + 1
    End If
      i = n
  Next
End Sub
 
Формульное решение. Массивная упрощённая:
Код
=ИНДЕКС(A:A;НАИМЕНЬШИЙ(ЕСЛИ(A$2:A$98-1<>A$1:A$97;СТРОКА($2:$98));СТРОКА(C1)))&-ИНДЕКС(A:A;НАИМЕНЬШИЙ(ЕСЛИ((A$2:A$98+1<>A$3:A$99);СТРОКА($2:$98));СТРОКА(C1)))
Массивная красивая:
Код
=ИНДЕКС(A:A;НАИМЕНЬШИЙ(ЕСЛИ(A$2:A$98-1<>A$1:A$97;СТРОКА($2:$98));СТРОКА(C1)))&ЕСЛИ(НАИМЕНЬШИЙ(ЕСЛИ(A$2:A$98-1<>A$1:A$97;СТРОКА($2:$98));СТРОКА(C1))=НАИМЕНЬШИЙ(ЕСЛИ((A$2:A$98+1<>A$3:A$99);СТРОКА($2:$98));СТРОКА(C1));"";-ИНДЕКС(A:A;НАИМЕНЬШИЙ(ЕСЛИ((A$2:A$98+1<>A$3:A$99);СТРОКА($2:$98));СТРОКА(C1))))
Страницы: 1
Наверх