Страницы: 1
RSS
Суммирование диапазона с выделением цифр из строк по условию
 
Здравствуйте!

Дано: Ячейки диапазона A3:F3 могут содержать значения вида: "", "р1", "з1",  "р1з1", "з1р1", "какой-то текст, в том числе, содержащий буквы р и з". Вместо единицы могут быть другие цифры. Но ровно одна  цифра после буквы.
Задача:
  • В ячейке G3 вывести сумму цифр, идущих в диапазоне A3:F3 после буквы "р".
  • В ячейке H3 вывести сумму цифр, идущих в диапазоне A3:F3 после буквы "з".
Как реализовано сейчас:
Определяю позицию символа "р", беру следующий символ после него. Так как "р" может вовсе не встретиться в ячейке, приходится оборачивать снаружи в ЕСЛИОШИБКА(). В итоге формула получается неэлегантной, для каждой ячейки я её копирую:
=ЕСЛИОШИБКА(ПСТР(A3;ПОИСК("р";A3)+1;1);0)+...+ЕСЛИОШИБКА(ПСТР(F3;ПОИСК("р";F3)+1;1);0)

Проблемы:
  • Неэлегантное решение, формула сложна в восприятии и исправлении. В настоящей задаче столбцов далеко не 5...
  • Если в тексте встретится буква "р" или "з" (слово "резон", например  :D ), а за ними не последует цифра, то произойдёт ошибка.
Изменено: monochromer - 22.02.2020 19:24:05
 
ну немножко не дотянули до элегантного  ;)  - массивка: =СУММ(ЕСЛИОШИБКА(--ПСТР(A3:F3;ПОИСК("р";A3:F3)+1;1);0))
Соблюдение правил форума не освобождает от модераторского произвола
 
Массивные
=SUM(IFERROR(--MID(A3:F3;FIND("р";;A3:F3)+1;1);))
=SUM(IFERROR(--MID(A3:F3;FIND("з";A3:F3)+1;1);))
По вопросам из тем форума, личку не читаю.
 
БМВ, buchlotnik,

Огромное спасибо! Проверил, работает! Считал, что СУММ может работать только с готовым диапазоном, что нельзя ему результат вычислений подставить. Подскажите, пожалуйста, где можно подробности узнать? Что это за -- в ваших формулах?
 
Цитата
monochromer написал:
Что это за -- в ваших формулах?
Наберите этот вопрос в поиске по форуму.
 
Для р
Код
Sub iSumma_р()
Dim j As Long
 With CreateObject("VBScript.RegExp")
   .Pattern = "р\d"
  For j = 1 To 5
     If .test(Cells(3, j)) Then
       Cells(3, 7) = Cells(3, 7) + Mid(.Execute(Cells(3, j))(0), 2)
     End If
   Next
 End With
End Sub
Страницы: 1
Наверх