Добавить числа с плавающей запятой, найденные в одной строке

Я начал использовать финансовые таблицы и ищу способ извлечения чисел с плавающей запятой (цены) из многострочных строк. Прикреплен пример того, как я форматирую цены и итоговые суммы по категориям:

пример формата таблицыДобавить числа с плавающей запятой, найденные в одной строке

Как видите, я вручную ввожу суммы, найденные в скобках, чтобы их просуммировать, но это занимает много времени и есть вероятность ошибки.

Я ищу ЛИБО скрипты приложения или решение формулы, которое будет извлекать числа с плавающей запятой или числа, содержащиеся в круглых скобках, из одной строки и суммировать их.

ТИА!

Я попробовал использовать сценарии приложений Google следующим методом

function addPricesFoundWithinCell(input) {
  var regExp = /(?:\()[^\(\)]*?(?:\))/g;
  var matches = regExp.exec(input);
  const initialValue = 0;
  return matches.reduce(
  (accumulator, currentValue) => accumulator + currentValue,
  initialValue,
);
}

это не работает! Я не очень хорошо знаком с javascript

Вы можете попробовать: =sum(split(A1,"()")) (при условии, что имя_элемента не является полным номером)

rockinfreakshow 28.02.2024 13:52

Поздравляем с новыми привилегиями!

Ryszard Czech 01.03.2024 22:17
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
2
66
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете исправить свою функцию следующим образом:

function addPricesFoundWithinCell(input) {
  return (input.match(/\(\d*\.?\d+\)/g) || [])
  .reduce(function(prev, curr) {
    return prev + +curr.replace(/^\(|\)$/g, '');
  }, 0);
}

Регулярное выражение \(\d*\.?\d+\) соответствует целым числам или числам с плавающей запятой внутри круглых скобок. Эти круглые скобки будут удалены позже при суммировании чисел, см. curr.replace(/^\(|\)$/g, '').

Альтернативно вы можете попробовать использовать matchAll с вашим регулярным выражением, но вам нужно будет использовать Array.from:

function addPricesFoundWithinCell(input) {
  return (Array.from(input.matchAll(/\((\d*\.?\d+)\)/g), x=>x[1]) || [])
  .reduce(function(prev, curr) {
    return prev + +curr;
  }, 0);
}

С Array.from(input.matchAll(/\((\d*\.?\d+)\)/g), x=>x[1]) вы получаете контент только группы 1 из матчей.

Большое спасибо! Regex мне чуждо, ха-ха. я очень ценю это

smashing_syntax 28.02.2024 13:50

Вы можете использовать

=SUM(SPLIT(REGEXREPLACE(A1,"(\b[\d.]+\b)|.","$1"),CHAR(10))) 

Другие вопросы по теме

Извлечение суммы различных столбцов на основе значений в других столбцах в повторяющемся массиве данных
Попытка выполнить цикл for внутри оператора if в Google Sheets
Объединяйте повторяющиеся элементы и суммируйте значения — в одной строке/ячейке
Множественный поиск и замена с включениями и исключениями
Как мне получить сумму чьих-либо доходов на нескольких таблицах, где она будет суммироваться только в том случае, если указано имя этого человека в таблицах Google
Ошибка 503 в боковой панели и модальном окне скрипта Google Apps
Всплывающее окно при редактировании ячейки – Google Sheet
Используйте раскрывающийся список (из диапазона) для ввода данных. Изменить элементы раскрывающегося списка. Данные устарели (как отразить изменения?)
Загрузка файлов, созданных Google Apps Script (Sheets), через Ruby
Google Таблицы: используйте условную функцию, чтобы разделить предложение в одной ячейке на несколько частей в последующих ячейках