У меня есть столбец где вносятся данные и в конце подбивается итог.
Но в одной из ячеек должно писать к примеру 1+1 чтоб это было видно в ячейке.
А в итоге его считало как в суме 2.
Можно ли так? Мне подойдёт решение и с помощью формул, и с помощью макросов.
[вложение удалено администратором]
Я сделал макрос в виде формулы. Макрос не рассчитывает выражение, а просто разбивает текст по плюсу и складывает полученные числа. Поэтому если напишите минус или другой математический знак, то макрос не поймёт выражение.
Ваши дальнейшие действия.
Макрос находится во вложенном файле, в других файлах этот макрос сам не появится.
Перейдите в ячейку "D24" - в строке формул поставьте знак равно и введите "MySum" - укажите фрагмент, с которым должна работать формула, - нажмите Enter - формула-макрос готова к работе.
Я сейчас уже вставил формулу-макрос в "D24".
Чтобы макрос заработал, нужно разрешить макросы: когда вы откроете файл, вверху будет жёлтая панель, связанная с макросами, вот на этой панели и нужно разрешить макросы.
Сам макрос:
Макрос
Function MySum(rng_data As Range) As Double
Dim data(), spl, ub2 As Long
Dim i As Long, ii As Long, j As Long
'1. Копирование данных из экселя в массив. Это ускорит работу макроса.
data() = rng_data.Value
'2. Запись кол-ва столбцов выбранного фрагмента в переменную.
' Может это ускорит макрос - быстрее обращаться к переменной, чем вызывать функцию "UBound".
ub2 = UBound(data, 2)
'3. Функционал. Результат запишется в переменную-функцию "MySum".
' Цикл по ячейкам.
For i = 1 To UBound(data, 1)
For j = 1 To ub2
'1) Если ячейка пустая.
If data(i, j) = "" Then
GoTo metka_NextCell
End If
'2) Разбивка текста в ячейке по знаку "+".
spl = Split(data(i, j), "+")
'3) Цикл по элементам массива "spl" и суммирование.
For ii = 0 To UBound(spl)
MySum = MySum + spl(ii)
Next ii
metka_NextCell:
Next j
Next i
End Function
[вложение удалено администратором]