
Я хочу проанализировать оператор конкатенации Excel, чтобы найти результат вложенного выражения. Например: =CONCAT("=1-2-3+7*8")
должно возвращать 52, и
=CONCAT("=AVERAGE(A1,A2)")
должно возвращать среднее значение двух полей. Есть ли какая-либо функция или какой-либо другой способ сделать это в Excel?
решение1
Попробуйте следующую пользовательскую функцию:
Public Function raghav(rng As Range) As Variant
Dim s As String
s = Mid(rng(1).Formula, 2)
arr = Split(s, Chr(34))
For Each a In arr
If Left(a, 1) = "=" Then
raghav = Evaluate(a)
Exit Function
End If
Next a
End Function
Пользовательские функции (UDF) очень просты в использовании.установитьи используйте:
- ALT-F11 открывает окно VBE
- ALT-I ALT-M открывает новый модуль
- вставьте текст и закройте окно VBE
Если вы сохраните книгу, UDF будет сохранен вместе с ней. Если вы используете версию Excel позже 2003, вы должны сохранить файл как .xlsm, а не .xlsx
КудалятьУДФ:
- откройте окно VBE, как указано выше
- очистить код
- закрыть окно VBE
КиспользоватьUDF из Excel:
=raghav(A1)
Чтобы узнать больше о макросах в целом, см.:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
и
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
а для получения подробной информации о UDF см.:
http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx
Для работы этого метода должны быть включены макросы!