Страницы: 1
RSS
Найти числа в ячейках с числами и текстом
 
Добрый день

Помогите пожалуйста решить задачу, поиском не смог.

Мне нужно в диапазоне ячеек, в которых есть текст (буквы) и числа, выявить все числа (в том числе двухзначные) и просуммировать их в отдельной ячейке. Как реализовать штатными средствами?
Изменено: Иван М - 13.01.2022 13:58:04 (Добавлен пример задачи, которую нужно решить)
 
Иван М, файл-пример
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Друзья, ни у кого нет идей?
 
КАК ОСТАВИТЬ В ЯЧЕЙКЕ ТОЛЬКО ЦИФРЫ ИЛИ ТОЛЬКО ТЕКСТ?
+ Вариант от MCH
Изменено: Jack Famous - 14.01.2022 10:54:04
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
вариант макросом:
Код
Sub Подсчет()
    Dim i, j, arr, rng As Range, oMatches As Object, LastRow As Long, sum
    Set rng = Application.InputBox("Выберите диапазон для суммирования", Type:=8)
    arr = rng
    arr = Application.Transpose(arr)
For Each i In arr
    With CreateObject("VBScript.Regexp")
        .Global = True
        .MultiLine = True
        .Pattern = "\d+"
        If .test(i) Then
            Set oMatches = .Execute(i)
            For Each j In oMatches
               sum = sum + CInt(j.Value)
            Next j
        End If
    End With
Next i
    LastRow = rng.Rows.Count + 1
    Cells(LastRow + 1, 1) = sum
End Sub

 
ф.массива
Код
=СУММ(ФИЛЬТР.XML("<j><i>"&ПОДСТАВИТЬ(A2;" ";"</i><i>")&"</i></j>";"//i[number()=.]"))
UPD: у вас там еще пустые строки бывают, на них вылазит #ЗНАЧ!, или избавьтесь от пустышек, или заигнорим их (файл не обновлял):
Код
=ЕСЛИ(A2="";"";СУММ(ФИЛЬТР.XML("<j><i>"&ПОДСТАВИТЬ(A2;" ";"</i><i>")&"</i></j>";"//i[number()=.]")))
Изменено: andylu - 14.01.2022 11:17:25
 
Ну или вариант попроще обычной формулой )
Код
=ЕСЛИОШИБКА(ЗНАЧЕН(ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(СТРОЧН(ПЕЧСИМВ(A2));"а";"");"б";"");"в";"");"г";"");"д";"");"е";"");"ж";"");"з";"");"и";"");"й";"");"к";"");"л";"");"м";"");"н";"");"о";"");"п";"");"р";"");"с";"");"т";"");"у";"");"ф";"");"х";"");"ц";"");"ч";"");"ш";"");"щ";"");"ъ";"");"ы";"");"ь";"");"э";"");"ю";"");"я";"");" ";"");"-";"");".";"");"!";"");"?";"");1;1));0)+ЕСЛИОШИБКА(ЗНАЧЕН(ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(СТРОЧН(ПЕЧСИМВ(A2));"а";"");"б";"");"в";"");"г";"");"д";"");"е";"");"ж";"");"з";"");"и";"");"й";"");"к";"");"л";"");"м";"");"н";"");"о";"");"п";"");"р";"");"с";"");"т";"");"у";"");"ф";"");"х";"");"ц";"");"ч";"");"ш";"");"щ";"");"ъ";"");"ы";"");"ь";"");"э";"");"ю";"");"я";"");" ";"");"-";"");".";"");"!";"");"?";"");2;1));0)+ЕСЛИОШИБКА(ЗНАЧЕН(ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(СТРОЧН(ПЕЧСИМВ(A2));"а";"");"б";"");"в";"");"г";"");"д";"");"е";"");"ж";"");"з";"");"и";"");"й";"");"к";"");"л";"");"м";"");"н";"");"о";"");"п";"");"р";"");"с";"");"т";"");"у";"");"ф";"");"х";"");"ц";"");"ч";"");"ш";"");"щ";"");"ъ";"");"ы";"");"ь";"");"э";"");"ю";"");"я";"");" ";"");"-";"");".";"");"!";"");"?";"");3;1));0)+ЕСЛИОШИБКА(ЗНАЧЕН(ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(СТРОЧН(ПЕЧСИМВ(A2));"а";"");"б";"");"в";"");"г";"");"д";"");"е";"");"ж";"");"з";"");"и";"");"й";"");"к";"");"л";"");"м";"");"н";"");"о";"");"п";"");"р";"");"с";"");"т";"");"у";"");"ф";"");"х";"");"ц";"");"ч";"");"ш";"");"щ";"");"ъ";"");"ы";"");"ь";"");"э";"");"ю";"");"я";"");" ";"");"-";"");".";"");"!";"");"?";"");4;1));0)
 
=СУММ(ЕСЛИОШИБКА(--ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A4:A8;" шт.";ПОВТОР(" ";99));"-";ПОВТОР(" ";99));СТОЛБЕЦ(A:Q)*99;99);))
Формула  массива, вводится тремя клавишами
 
Цитата
МатросНаЗебре: вариант попроще обычной формулой )
ахахахахах   :D   :D   :D
В какие-то 3 020 символов всего-навсего
Изменено: Jack Famous - 14.01.2022 12:29:28
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
3020 меньше МРОТа поэтому норм
 
Всем добрый день. Спасибо большое всем откликнувшимся. Честно говоря ни одна формула не заработала (мои кривые руки и отсутствие времени для вникания в проблемы почему так), но я решил изменить подход к организации задачи и немного по другому стал ее решать. Но в любом случае вы большие молодцы!
Страницы: 1
Наверх