=СУММ(ЕСЛИОШИБКА(--ПОДСТАВИТЬ(ЛЕВСИМВ(A3:E3;ТРАНСП(МУМНОЖ(--(ЕЧИСЛО(--ПСТР(ТРАНСП(ПОДСТАВИТЬ(A3:E3;".";","));1;{1\2\3\4\5})));{1;1;1;1;1})));".";",");)) К сообщению приложен файл: Copy_of_1267_2.xlsx(17.2 Kb)
Вижу, вы поправили. А во вложении там еще первая (зачеркнутая) формула? А вторую формулу у меня эксель 2007 вообще не "кушает", ругается на 1\2\3\4\5 И я не могу себе в эксель перенести, она какая-то "чувствительная" сразу дает 0 Хотя я аккуратно меняю A3:E3 на свой диапазон G25:AK25 то сразу получаю 0
=СУММ(ЕСЛИОШИБКА(--ПОДСТАВИТЬ(ЛЕВСИМВ(A3:E3;ТРАНСП(МУМНОЖ(--(ЕЧИСЛО(--ПСТР(ТРАНСП(ПОДСТАВИТЬ(A3:E3;".";","));1;{1\2\3\4\5})));{1;1;1;1;1})));".";",");)) К сообщению приложен файл: Copy_of_1267_2.xlsx(17.2 Kb)
Вижу, вы поправили. А во вложении там еще первая (зачеркнутая) формула? А вторую формулу у меня эксель 2007 вообще не "кушает", ругается на 1\2\3\4\5 И я не могу себе в эксель перенести, она какая-то "чувствительная" сразу дает 0 Хотя я аккуратно меняю A3:E3 на свой диапазон G25:AK25 то сразу получаю 0 exc012
Сообщение отредактировал exc012 - Вторник, 12.11.2019, 07:19
Могу предложить пользовательскую функцию. Вполне быстро считает на больших массивах. игнорирует любые знаки кроме цифр, точки воспринимает как запятые. [vba]
Код
Function сумма_без_букв(диапазон_ As Range) ReDim tmp_sum(1 To диапазон_.Count) Set objRegExp = CreateObject("VBScript.RegExp") objRegExp.Global = True objRegExp.IgnoreCase = True On Error Resume Next With objRegExp For i_d = 1 To диапазон_.Count tmp_sum(i_d) = 0 .Pattern = "[^0-9/./,]" tmp_sum(i_d) = --Replace(.Replace(диапазон_(i_d), ""), ".", ",") Next End With сумма_без_букв = Application.Sum(tmp_sum) End Function
[/vba]
Добрый день!
Могу предложить пользовательскую функцию. Вполне быстро считает на больших массивах. игнорирует любые знаки кроме цифр, точки воспринимает как запятые. [vba]
Код
Function сумма_без_букв(диапазон_ As Range) ReDim tmp_sum(1 To диапазон_.Count) Set objRegExp = CreateObject("VBScript.RegExp") objRegExp.Global = True objRegExp.IgnoreCase = True On Error Resume Next With objRegExp For i_d = 1 To диапазон_.Count tmp_sum(i_d) = 0 .Pattern = "[^0-9/./,]" tmp_sum(i_d) = --Replace(.Replace(диапазон_(i_d), ""), ".", ",") Next End With сумма_без_букв = Application.Sum(tmp_sum) End Function
=СУММ(ЕСЛИОШИБКА(--ЛЕВБ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A3:H3;".";",");",";ПСТР(1/2;2;1));3);)) или для старого офиса: =СУММ(ЕСЛИ(ЕЧИСЛО(-ЛЕВБ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A3:H3;".";",");",";ПСТР(1/2;2;1));3));--ЛЕВБ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A3:H3;".";",");",";ПСТР(1/2;2;1));3))) *Или так: =СУММ(ЕСЛИ(ЕЧИСЛО(-ЛЕВБ(A3:H3;1));--ЛЕВБ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A3:H3;".";",");",";ПСТР(1/2;2;1));3)))
Ни одна из формул не работает!! Все выдают 0 на строке такого типа: 8Я 8Я В
Т.е. когда целые числа эта формула не работает! Подскажите, ПОЖАЛУЙСТА, как ее адаптировать для этого случая?
=СУММ(ЕСЛИОШИБКА(--ЛЕВБ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A3:H3;".";",");",";ПСТР(1/2;2;1));3);)) или для старого офиса: =СУММ(ЕСЛИ(ЕЧИСЛО(-ЛЕВБ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A3:H3;".";",");",";ПСТР(1/2;2;1));3));--ЛЕВБ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A3:H3;".";",");",";ПСТР(1/2;2;1));3))) *Или так: =СУММ(ЕСЛИ(ЕЧИСЛО(-ЛЕВБ(A3:H3;1));--ЛЕВБ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A3:H3;".";",");",";ПСТР(1/2;2;1));3)))
Ни одна из формул не работает!! Все выдают 0 на строке такого типа: 8Я 8Я В
Т.е. когда целые числа эта формула не работает! Подскажите, ПОЖАЛУЙСТА, как ее адаптировать для этого случая?exc012
Сообщение отредактировал exc012 - Вторник, 12.11.2019, 07:17
С этим должна работать моя последняя формула, но вы с непонятным упорством хотите работать с XLS. У вас Excel 2003?
У меня на этом ПК 2007 но и на нем я сохранил файл в формате xlsx и все равно, ваша последняя формула выдает ошибку, ругается на блок {1\2\3\4\5}. Хотя может и старый эксель на ПК встретится. Сейчас добавил в пример ячейку с целым числом. Надеюсь, теперь все учел
С этим должна работать моя последняя формула, но вы с непонятным упорством хотите работать с XLS. У вас Excel 2003?
У меня на этом ПК 2007 но и на нем я сохранил файл в формате xlsx и все равно, ваша последняя формула выдает ошибку, ругается на блок {1\2\3\4\5}. Хотя может и старый эксель на ПК встретится. Сейчас добавил в пример ячейку с целым числом. Надеюсь, теперь все учел exc012
exc012, после нескольких решений ещё какие-нибудь форматы придумаете?
Да нет. в примере все было. Просто и не мог подумать, что случай с целым числом надо еще в пример, просто дробное - это более сложный случай, поэтому и не привел его. думал "на автомате" сработает
exc012, после нескольких решений ещё какие-нибудь форматы придумаете?
Да нет. в примере все было. Просто и не мог подумать, что случай с целым числом надо еще в пример, просто дробное - это более сложный случай, поэтому и не привел его. думал "на автомате" сработает exc012
Немного дописала первую форму Сергея. Хотя уверенности, что не появятся ещё варианты, нет =СУММ(ЕСЛИОШИБКА(ЕСЛИОШИБКА(--ЛЕВБ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A3:H3;".";",");",";ПСТР(1/2;2;1));3);--ЛЕВБ(A3:H3));))
Если в формуле ставлю не 8Я, а, например, 18Я тогда считает 1, а не 18
Подправил пример на этот случай
Ну все. Более двух цифр в целой части точно не будет в ячейке
Немного дописала первую форму Сергея. Хотя уверенности, что не появятся ещё варианты, нет =СУММ(ЕСЛИОШИБКА(ЕСЛИОШИБКА(--ЛЕВБ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A3:H3;".";",");",";ПСТР(1/2;2;1));3);--ЛЕВБ(A3:H3));))
Если в формуле ставлю не 8Я, а, например, 18Я тогда считает 1, а не 18
Подправил пример на этот случай
Ну все. Более двух цифр в целой части точно не будет в ячейке exc012
Может быть, тут, все таки, зайти с другой стороны? Просто есть массив этих сокращений, порядка 15-20 различных букв. Я, АФ, ПР и т.д. Может пойти по простой формуле, просто замена букв (сочетаний букв) на пустоту? И в каком-то массиве перечислить все варианты?
Может быть, тут, все таки, зайти с другой стороны? Просто есть массив этих сокращений, порядка 15-20 различных букв. Я, АФ, ПР и т.д. Может пойти по простой формуле, просто замена букв (сочетаний букв) на пустоту? И в каком-то массиве перечислить все варианты?exc012
Сообщение отредактировал exc012 - Вторник, 12.11.2019, 08:10