Иправить функцию сжатия цифр - VBA
Формулировка задачи:
Результат не совсем получился для однозначных, двухзначных и трехзначных как то странно разъединяет два вместе
2, 3, 5, 8, 10, 12-14, 16, 22, 25-27, 29-30, 32-33, 37, 39, 40, 101-102, 104-105, 1011-1012, 1112
неправильно через тире здесь 29, 30 и 32, 33 и 101, 102 также 104, 105 и еще 1011, 1012 так должно быть
для однозначных тоже самое
2, 3, 5, 8, 10, 12-14, 16, 22, 25-27, 29-30, 32-33, 37, 39, 40, 101-102, 104-105, 1011-1012, 1112, 1119, 1120, 9-10, 6-7,
9-10 и 6-7 вместе не правильно, они с запятыми должны быть 9, 10 и 6, 7
и если в конце стоит запятая, то как ее убрать
2, 3, 5, 8, 10, 12-14, 16, 22, 25-27,
Решение задачи: «Иправить функцию сжатия цифр»
textual
Листинг программы
Function Sgatie(äèГ*ГЇГ*çîГ* As Range) As String Dim i&, j&, a() a = äèГ*ГЇГ*çîГ*.Value Dim tArr ReDim tArr(1 To UBound(a, 1), 1 To 3) For i = 1 To UBound(a, 1) tArr(i, 1) = a(i, 1) tArr(i, 2) = a(i, 1) Next Output = "" For i = 1 To UBound(a, 1) tArr(i, 1) = a(i, 1) tArr(i, 2) = a(i, 1) For y = i + 1 To UBound(tArr, 1) If tArr(i, 2) + 1 = tArr(y, 1) Then tArr(i, 2) = tArr(y, 1) tArr(y, 1) = 0 Else i = y - 1: Exit For End If Next y Next i For i = 1 To UBound(tArr, 1) If tArr(i, 1) <> 0 Then If tArr(i, 1) = tArr(i, 2) Then Output = Output & tArr(i, 1) & ", " ElseIf tArr(i, 1) = tArr(i, 2) - 1 Then Output = Output & tArr(i, 1) & ", " & tArr(i, 2) & ", " ElseIf tArr(i, 1) < tArr(i, 2) - 1 Then Output = Output & tArr(i, 1) & "-" & tArr(i, 2) & ", " Else MsgBox ("ГЋГёГЁГЎГЄГ* Гў ôîðìóëå") End If End If Next i If Right(Output, 1) = " " Then Output = Mid(Output, 1, Len(Output) - 1) End If If Right(Output, 1) = "," Then Output = Mid(Output, 1, Len(Output) - 1) End If Sgatie = Output End Function
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д