Извлечь и СУММЫ чисел из строки

264
PeterH

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

В ячейке A1 у меня может быть строка, которая всегда будет состоять из числа, запятой, числа и т. Д.

Может быть несколько чисел, всегда разделенных запятой.

Например:

12,12,10,10 

или же

12,12,1 

В ячейке B1 я хотел бы суммировать числа, чтобы получить результат 44или 25.

Как мне этого добиться?

Единственное, о чем я мог подумать, - это использовать текст в столбцах, но это немного мешает структуре рабочей книги, так как требует большего количества столбцов. Я надеялся на формулу, которую я мог бы просто ввести в B1 и потянуть вниз, если это возможно.

1
Используйте простую пользовательскую функцию. Разделите ваше текстовое значение на строковый массив с помощью запятого и удалите сумму элементов массива, преобразованную в числа. Akina 5 лет назад 0
@ Акина Я понятия не имею, как начать делать это, лол PeterH 5 лет назад 0

3 ответа на вопрос

2
Scott Craner

Это можно сделать с помощью формулы:

=SUMPRODUCT(--TRIM(MID(SUBSTITUTE(A1,",",REPT(" ",99)),(ROW($A$1:INDEX(A:A,LEN(A1)-LEN(SUBSTITUTE(A1,",",""))+1))-1)*99+1,99))) 

Это разделяет ,и итерирует части и суммирует их.

enter image description here

это впечатляет PeterH 5 лет назад 0
1
Akina

Я понятия не имею, как начать делать это

  • Откройте файл Excel.
  • Нажмите Alt-F11, откроется окно редактора VBA.
  • Выберите в меню «Вставить модуль», откроются новые окна модуля.
  • Вставьте приведенный ниже код в окно модуля:

    Public Function ParseAndSum(source As String) As Integer Dim tmp() As String, i As Integer tmp = Split(source, ",") For i = LBound(tmp) To UBound(tmp) ParseAndSum = ParseAndSum + Val(tmp(i)) Next i End Function 
  • Закройте редактор VBA.

  • Выберите ячейку назначения (например, B1).
  • Нажмите ручку «функция» (fx), откроется окно «Мастер функций».
  • Выберите категорию «Пользовательские функции», выберите функцию ParseAndSum, нажмите «Далее».
  • Нажмите на ячейку источника (A1), ее адрес вставляется в поле Source.
  • Нажмите ОК.

Это все.

PS. Не забудьте включить выполнение макросов в настройках Excel.

Благодарю вас ! Я постараюсь научиться на этом, как начать создавать UDF для себя PeterH 5 лет назад 0
@PeterH Помните - функция доступна только в этом файле. Чтобы использовать его в другом файле, вы должны также выполнить все вышеперечисленное в другом файле. Akina 5 лет назад 0
0
Roy

Еще один способ сделать это и ответить на него традиционно - использовать команду из «старого» набора макросов Excel 4.

Вы ДОЛЖНЫ использовать эти команды в именованных диапазонах (или макросах тоже, но обычно люди ищут не-макро-решение).

У этого решения есть два аспекта. Во-первых, как сделать основы:

(Ваши данные находятся в ячейке A1, а ваш результат будет в ячейке B1, как и требовалось)

Установите именованный диапазон (может быть назван «Результатом»). Дайте ему формулу:

=EVALUATE(SUBSTITUTE(A1,",","+")) 

Затем используйте именованный диапазон в формуле в ячейке B1: = Результат

В формуле SUBSTITUTE () используется "обычно", чтобы заменить запятые для знаков плюс, которые будут необходимы для работы EVALUATE (). EVALUATE () - это макрокоманда Excel 4, которая будет делать именно это: оценивать все, что она может распознать как формулу (поэтому необходимо заменить запятые).

Причина, по которой он должен использоваться в именованном диапазоне, немного загадочна. Они не будут работать напрямую, введенные в ячейки таблицы. Они будут работать в реальных макросах. Таким образом, мысль заключается в том, что именованные диапазоны должны рассматриваться Excel как версия («облегченная» версия) макросов, работа которых выполняется механизмом макросов, а не механизмом расчета листов.

Второй аспект - как получить формулу для ссылки на «ячейку, расположенную слева от ячейки, в которой я хочу получить результат» ...

Выберите ячейку A2 и введите формулу, как указано выше. Введите формулу (скопируйте и вставьте, введите, как вам нравится) и сохраните ее. Проверьте формулу после того, как установлен Именованный диапазон, и убедитесь, что для ссылки на ячейку нет «$» (вы хотите, чтобы «А1» НЕ представлял собой версию «$ A $ 1»).

Все готово. Теперь в любом месте вашего листа "= Результат" будет ссылаться на ячейку слева от нее. Поэтому скопируйте его вниз в столбец B, или что-то еще, что может быть полезным, и оно будет работать с ячейкой до содержимого слева.

Вы ДОЛЖНЫ сделать вторую часть правильной, но это легко, а?

Выполните поиск макрокоманд в Excel 4, и вы найдете все доступное руководство, что-то около 600 страниц, и там есть некоторые драгоценные камни, хотя некоторые из них были даны нам в новых функциях на протяжении многих лет.

Похожие вопросы