Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2016, 13:53   #11
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

IgorGO, гениально!!

позволю себе привести текст функции здесь:
Код:
Option Explicit

Function SummD(rg As Range) As Double
  Dim re, m, s As Double, i%
  With CreateObject("VBScript.RegExp")
    .Global = True: .Pattern = "- \d+"
    If .test(rg.Value) Then
      Set m = .Execute(rg.Value)
      For i = 0 To m.Count - 1
        s = s + Val(Right(m(i), Len(m(i)) - 2))
      Next
    End If
  End With
  SummD = s
End Function
я бы через регэкспы не смог написать, парсил бы строчку вручную.
Кода у меня было бы на порядок больше. И писал бы отлаживал я его соответственно долго и мучительно!

Спасибо за код! Получил эстетическое наслажение!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.05.2016, 14:19   #12
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Спасибо, Серегей!

я рад)))

в функции порядка 300 символов и реально затраты времени на ее написание свелись к попаданию пальцами по 300 кнопкам в определенном порядке

все, что нужно РегЭскпрессу - это корректный шаблон поиска. в данном случае и над этим элементом думать не пришлось (даже при моих скромных знаниях РегЭксп)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 13.05.2016, 16:15   #13
xelen5
Пользователь
 
Регистрация: 13.05.2016
Сообщений: 11
По умолчанию

Спасибо , приятно очень!
Это макрос? Но что-то когда тяну на нижнюю ячейку, не работает. пишет #ИМЯ?
xelen5 вне форума Ответить с цитированием
Старый 13.05.2016, 16:20   #14
svsh2016
Форумчанин
 
Регистрация: 16.06.2015
Сообщений: 100
По умолчанию

добрый день,еще вариант функции в столбце N

Код:
Function SummD1#(t$)
  Dim m As Object, i%
  With CreateObject("VBScript.RegExp"): .Global = True: .Pattern = "- \d+"
    If .test(t) Then
      Set m = .Execute(t)
      For i = 0 To m.Count - 1
        SummD1 = SummD1 + Mid(m(i), 3)
      Next
    End If
  End With
End Function
Вложения
Тип файла: xls example_13_05_2016_pr_sum.xls (80.5 Кб, 16 просмотров)
svsh2016 вне форума Ответить с цитированием
Старый 13.05.2016, 16:24   #15
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

в файле, который я выложил в колонку К скопируйте данных с Вашего (другого) файла
в колонке М видите результаты
можете теперь скопировать колонку М с результатами обратно в исходный файл специальной вставкой, "как значения"
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 13.05.2016, 20:24   #16
svsh2016
Форумчанин
 
Регистрация: 16.06.2015
Сообщений: 100
По умолчанию

добрый вечер,еще два варианта функций
в столбце P
Код:
Function SummD3#(t$)
  Dim m As Object, i%
  With CreateObject("VBScript.RegExp")
    .Global = True: .Pattern = "-\s+(\d+)"
    If .test(t) Then
      Set m = .Execute(t)
      For i = 0 To m.Count - 1
        SummD3 = SummD3 + m(i).Submatches(0)
      Next
    End If
  End With
End Function
в столбце O для данного файл-примера или чисел от 0 до 9

Код:
Function SummD2#(t$)
  Dim i%
  With CreateObject("VBScript.RegExp"): .Global = True: .Pattern = "- \d"
    If .test(t) Then
      For i = 0 To .Execute(t).Count - 1
     SummD2 = SummD2 + Mid(t, .Execute(t)(i).FirstIndex + 3, 1)
      Next
    End If
  End With
End Function
Вложения
Тип файла: xls example_13_05_2016_pr_sum1.xls (76.5 Кб, 16 просмотров)
svsh2016 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как записать в Екселе цифры c степенью или индексом, так чтоб цифры считало, индексы (степень) игнор Andrew_K1982 Microsoft Office Excel 7 06.03.2013 23:10
Напечатать текст, удалив из него все цифры и знаки "+" или "–". Язык С++. KaylasMKTY Помощь студентам 8 07.03.2010 21:35
TEdit, как проверить что введено(число или текст). kReid Общие вопросы Delphi 4 26.02.2010 11:46
как узнать что введено а Edit1 цифры или нет doncova1 Компоненты Delphi 9 05.02.2007 10:43
как сложить цифры в строке с помощью delphi Alar Общие вопросы Delphi 0 29.10.2006 19:58