Это можно сделать с помощью формулы:
=SUMPRODUCT(--TRIM(MID(SUBSTITUTE(A1,",",REPT(" ",99)),(ROW($A$1:INDEX(A:A,LEN(A1)-LEN(SUBSTITUTE(A1,",",""))+1))-1)*99+1,99)))
Это разделяет ,
и итерирует части и суммирует их.
Я смотрел на подобные вопросы к этому, но не мог найти точное решение моей проблемы. Если есть дубликат, который может решить эту проблему, я закрою этот вопрос.
В ячейке A1 у меня может быть строка, которая всегда будет состоять из числа, запятой, числа и т. Д.
Может быть несколько чисел, всегда разделенных запятой.
Например:
12,12,10,10
или же
12,12,1
В ячейке B1 я хотел бы суммировать числа, чтобы получить результат 44
или 25
.
Как мне этого добиться?
Единственное, о чем я мог подумать, - это использовать текст в столбцах, но это немного мешает структуре рабочей книги, так как требует большего количества столбцов. Я надеялся на формулу, которую я мог бы просто ввести в B1 и потянуть вниз, если это возможно.
Я понятия не имею, как начать делать это
Вставьте приведенный ниже код в окно модуля:
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.
Это все.
PS. Не забудьте включить выполнение макросов в настройках Excel.
Еще один способ сделать это и ответить на него традиционно - использовать команду из «старого» набора макросов Excel 4.
Вы ДОЛЖНЫ использовать эти команды в именованных диапазонах (или макросах тоже, но обычно люди ищут не-макро-решение).
У этого решения есть два аспекта. Во-первых, как сделать основы:
(Ваши данные находятся в ячейке A1, а ваш результат будет в ячейке B1, как и требовалось)
Установите именованный диапазон (может быть назван «Результатом»). Дайте ему формулу:
=EVALUATE(SUBSTITUTE(A1,",","+"))
Затем используйте именованный диапазон в формуле в ячейке B1: = Результат
В формуле SUBSTITUTE () используется "обычно", чтобы заменить запятые для знаков плюс, которые будут необходимы для работы EVALUATE (). EVALUATE () - это макрокоманда Excel 4, которая будет делать именно это: оценивать все, что она может распознать как формулу (поэтому необходимо заменить запятые).
Причина, по которой он должен использоваться в именованном диапазоне, немного загадочна. Они не будут работать напрямую, введенные в ячейки таблицы. Они будут работать в реальных макросах. Таким образом, мысль заключается в том, что именованные диапазоны должны рассматриваться Excel как версия («облегченная» версия) макросов, работа которых выполняется механизмом макросов, а не механизмом расчета листов.
Второй аспект - как получить формулу для ссылки на «ячейку, расположенную слева от ячейки, в которой я хочу получить результат» ...
Выберите ячейку A2 и введите формулу, как указано выше. Введите формулу (скопируйте и вставьте, введите, как вам нравится) и сохраните ее. Проверьте формулу после того, как установлен Именованный диапазон, и убедитесь, что для ссылки на ячейку нет «$» (вы хотите, чтобы «А1» НЕ представлял собой версию «$ A $ 1»).
Все готово. Теперь в любом месте вашего листа "= Результат" будет ссылаться на ячейку слева от нее. Поэтому скопируйте его вниз в столбец B, или что-то еще, что может быть полезным, и оно будет работать с ячейкой до содержимого слева.
Вы ДОЛЖНЫ сделать вторую часть правильной, но это легко, а?
Выполните поиск макрокоманд в Excel 4, и вы найдете все доступное руководство, что-то около 600 страниц, и там есть некоторые драгоценные камни, хотя некоторые из них были даны нам в новых функциях на протяжении многих лет.