Задать свой вопрос   *более 50 000 пользователей получили ответ на «Решим всё»

Задача 75247 написать программу в эксель, которая...

Условие

написать программу в эксель, которая высчитывает сумму всех чисел, входящих в строку. например строка: bbs40hbv90 ответ: 130

информатика 10-11 класс 59

Решение

Предупреждаю сразу - знаки подчеркивания убирайте,
они для выравнивания.
Вместо них ставьте табуляцию на 4, 8, 12 и т.д. пробелов.
Sub NumberInToString
Dim X As String, i As Long, Y As Integer
Dim Char As String, S As Long
X = Worksheets("Лист1").Rows(1).Cells(1)
' X - это переменная, в которую мы записываем строку, находящуюся на Лист1 в ячейке А1.
' Если надо, например, из ячейки C5, то будет: Rows(5).Cells(3)
i = 1 ' Переменная счётчик знаков в строке.
S = 0 ' Сумма чисел, которую мы ищем
Do While (i <= Len(X)) ' Len(X) - это длина строки X
' В цикле перебираем все знаки в строке X
____ Char = Mid(X, i, 1) ' Char - очередной знак из строки X
____ If (Asc(Char) >= &H30) And (Asc(Char) <= &H39) Then
____ ' Если очередной знак в строке - цифра от 0 до 9, то
________ Y = Val(Char) ' В переменную Y записываем цифру
________ i = i + 1 ' Переходим к следующему знаку в строке
________ If i > Len(X) Then ' Если превысили длину строки
____________ S = S + Y ' Добавляем полученное число в сумму
____________ Exit Do ' Выскакиваем из цикла
________ End If
________ Do
____________ Char = Mid(X, i, 1)
____________ If (Asc(Char) >= &H30) And (Asc(Char) <= &H39) Then
____________ ' Пока подряд идут несколько цифр
________________ Y = Y * 10 + Val(Char)
________________ ' Дописываем очередную цифру в число справа
________________ i = i + 1
________________ If i > Len(X) Then ' Если превысили длину строки
____________________ S = S + Y ' Добавляем полученное число в сумму
____________________ Exit Do ' Выскакиваем из цикла
________________ End If
____________ Else
____________ ' Если цифры кончились, очередной знак - не цифра.
________________ S = S + Y ' Добавляем полученное число в сумму
________________ Exit Do ' Выскакиваем из цикла
____________ End If
________ Loop
____ End If
____ i = i + 1
Loop
Worksheets("Лист1").Rows(2).Cells(1) = S
' Выводим найденную сумму в ячейку А2.
End Sub

Проверил в Экселе 2010 - работает!
Это всё записывается в макрос.

Написать комментарий

Меню

Присоединяйся в ВК