Последние записи
- Рандомное слайдшоу
- Событие для произвольной области внутри TImage
- Удаление папки с файлами
- Распечатка файла
- Преобразовать массив байт в вещественное число (single)
- TChromium (CEF3), сохранение изображений
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
14th
Июн
Удалить повторяющиеся элементы из массива (VBA в Excel)
Posted by obzor under VBA
нужна функция сокращающая запись вида
«48,50,57,58,53,51,60,62,56,45,44,4 6,46,47,66,61,59,49,63,64,52,65,69, 69,69,69»
до 44-53,56-66,69
т.е порядковое перечисление сокращающая.
Sub Test()
Const DgtList$ = "48,50,57,58,53,51,60,62,56,45,44,46,46,47,66,61,59,49,63,64,52,65,69,69,69,69"
Debug.Print ShortDgtList(DgtList)
End Sub
Function ShortDgtList$(s$)
Dim dct, ar, i&, p&
Set dct = CreateObject("Scripting.Dictionary"): ar = Split(s, ",")
For i = LBound(ar) To UBound(ar)
If Not dct.exists(Val(ar(i))) Then dct.Add Val(ar(i)), i
Next
ar = dct.keys: i = ActiveSheet.UsedRange.Column + ActiveSheet.UsedRange.Columns.Count
With Cells(1, i).Resize(UBound(ar) + 1, 1)
.Value = WorksheetFunction.Transpose(ar): .Sort .Cells(1): ar = .Value: .ClearContents
End With
s = ar(1, 1): p = 1
For i = 2 To UBound(ar)
If ar(i, 1) <> ar(p, 1) + i - p Then
If i - p > 1 Then s = s & "-" & ar(i - 1, 1)
s = s & "," & ar(i, 1): p = i
Else
If i = UBound(ar) Then s = s & "-" & ar(i, 1)
End If
Next
ShortDgtList = s
End Function
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)