макрос Excel 4.0 оценить - PullRequest
0 голосов
/ 17 мая 2018

Я пытаюсь оценить уравнение в Excel, где операция определяется значением ячейки.Например, предположим, у меня есть уравнение в A2, которое говорит 100 (operation) 100.Я хочу, чтобы эта ячейка была оценена так, чтобы if A1 = 1, then 100*100, if 2 then 100/100, if 3 then 100+100, if 4 then 100-100.Мне удалось найти решение, использующее VLOOKUP для определения операции, объединение для объединения чисел с операцией и макрофункцию Excel 4.0 EVALUATE в именованном диапазоне для оценки текстовой строки как числа.

Теперь я хотел бы сделать то же самое в VBA (у меня все еще есть таблица поиска операций, то есть 1 = *, 2 = / и т. Д. В листе Excel).Есть ли способ сделать это без операторов if / then / else?

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Другой подход, использующий регистр выбора:

Function Calc(eq As Integer, op As Double) As Double
    Select Case eq
        Case 1: Calc = op * op
        Case 2: Calc = op / op
        Case 3: Calc = op + op
        Case 4: Calc = op - op
        Case Else: Calc = 0
    End Select
End Function
0 голосов
/ 17 мая 2018
Function Eval(eq, op)
    Eval = Application.Evaluate("=" & Replace(eq, "(operation)", Mid("*/+-", op, 1)))
End Function

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...