Страницы: 1
RSS
Вывод числа из строки после n-той запятой
 
Добрый вечер,

помогите пожалуйста с формулой.

В ячейке находится строка из чисел разделённых запятыми (напр. 10 чисел). Мне известно количество запятых (напр. 5), после которых находится нужное мне число.
Необходимо пройти по строке через запятые (через 5 запятых) и вывести число между 5-ой и 6-ой запятой. Числа могут быть разной длины, дробные и отрицательные. Количество чисел в строке может меняться. Количество запятых, после которых нужное мне число тоже может меняться.

Пример - строка из 10-ти чисел и 9-ти запятых:
-72.8,-56.56,1,100,-7,-89.15,23.348,15, 45.78,75
меня интересует число между 5-ой запятой и 6-ой запятыми, т.е. -89.15

Заранее спасибо
 
=СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(A1;",";ПОВТОР(" ";50));5*50;50))
5* - нужная запятая
 
Код
Sub ShowNDigit()
  Dim s$, re
  s = "-72.8,-56.56,1,100,-7,-89.15,23.348,15, 45.78,75"
  Set re = CreateObject("VBScript.RegExp")
  re.Pattern = "([\d-.]+)": re.Global = True
  If re.test(s) Then MsgBox re.Execute(s)(5)
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Спасибо большое,

оба варианта подходят.
небольшая просьба, в целях образования. Я не силён в VB. Как сделать второй вариант на VB, чтобы проходил все ряды сверху вниз и результат выкладывал в соседнюю ячейку, а не в massage?
 
как то так
Код
Sub ShowNDigit()
  Dim s, re
 ' s = "-72.8,-56.56,1,100,-7,-89.15,23.348,15, 45.78,75"
  Set re = CreateObject("VBScript.RegExp")
  re.Pattern = "([\d-.]+)": re.Global = True
For each s in Selection
  If re.test(s.value) Then s.offset(0,1)= re.Execute(s.value)(5)
next
End Sub

работает с выделенными ячейками столбца.
Изменено: V - 12.09.2018 09:32:15
Страницы: 1
Наверх