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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2017, 21:30   #1
ZlodeiDen
Пользователь
 
Регистрация: 14.04.2011
Сообщений: 25
По умолчанию создание пользовательской функции

Здравствуйте!
Помогите сделать пользовательскую функцию.
суть в том, что нужно перемножить числа из одной ячейки где есть и число и текст, без использования "текст по столбцам" и макроса.

примерно понимаю как это сделать, а вот собрать "велосипед" из кхм-кхм и палок, опыта и знаний не хватает(
вот примерно, что у меня есть сейчас, а как это совместить в правильный код ?
Код:
Function DS(s$)
    With CreateObject("VBScript.RegExp")
     If Application.International(xlDecimalSeparator) = "," Then
      .Global = 1: .Pattern = "(\d+)\.(?=\d)": DS = .Replace(s, "$1,")
     Else
      .Global = 1: .Pattern = "(\d+),(?=\d)": DS = .Replace(s, "$1.")
     End If
    End With
    
   DS = Replace(s, "х", "x")
   
   DS = Replace(s, "(*", "")
   
   DS = Replace(s, " ", "")
   
   
   DS = Split(s, "x", -1) * Split(Split(s, "x")(1), "x")(0)

   
End Function
з.ы. посоветуйте с чего начать изучение vba
Вложения
Тип файла: xlsx test.xlsx (8.0 Кб, 23 просмотров)

Последний раз редактировалось ZlodeiDen; 16.11.2017 в 21:32. Причина: посоветуйте с чего начать изучение vba
ZlodeiDen вне форума Ответить с цитированием
Старый 16.11.2017, 22:27   #2
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Уж сразу регэксп
Код:
Function DS(ByVal s$)
Dim i&
  s = Replace(s, "х", "x", , , vbTextCompare) 'рус на лат
  i = InStr(1, s, "x", vbTextCompare)
  If i = 0 Then Exit Function
  s = Replace(s, ",", ".")
  DS = Val(s) * Val(Mid$(s, i + 1))
End Function
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 16.11.2017, 23:58   #3
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Там с реплейсами косяк (в первом коде) - они все бесполезны!
Нужно присваивать результат назад в s.
В остальное не вникал.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 17.11.2017, 00:31   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Цитата:
создание пользовательской функции
...
без использования "текст по столбцам" и макроса
НЕ ВОЗМОЖНО создать пользовательскую функцию не используя макросы!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 17.11.2017 в 00:39.
IgorGO вне форума Ответить с цитированием
Старый 22.11.2017, 10:36   #5
ZlodeiDen
Пользователь
 
Регистрация: 14.04.2011
Сообщений: 25
По умолчанию

Цитата:
Сообщение от Казанский Посмотреть сообщение
Уж сразу регэксп
Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Там с реплейсами косяк
спасибо!

Цитата:
Сообщение от IgorGO Посмотреть сообщение
НЕ ВОЗМОЖНО создать пользовательскую функцию не используя макросы!
Я неправильно выразился))
ZlodeiDen вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание пользовательской функции в Excel Аcmrf Microsoft Office Excel 5 29.04.2014 16:09
создание пользовательской функции Devil669 Microsoft Office Excel 1 10.12.2012 23:47
Создание пользовательской формулы Squarded Microsoft Office Excel 3 05.12.2011 17:37
написание пользовательской функции drNabla Microsoft Office Excel 15 05.11.2010 09:08
Написание пользовательской функции. GoreProgrammist Microsoft Office Excel 9 15.07.2009 15:28