Function INTEG(exp As String, min As Double, max As Double)

Dim t As Double

Dim x As Integer

Dim range As Double

Dim exparray(5000) As Double

Dim dx As Double

range = max - min

dx = range / 5000

t = min

x = 0

Do Until x = 5000

exparray(x) = Evaluate(Replace(exp, "x", CStr(t))) * dx + 0.5 * dx * Abs(Evaluate(Replace(exp, "x", CStr(t + dx))) - Evaluate(Replace(exp, "x", CStr(t))))

t = t + dx

x = x + 1

Loop

INTEG = WorksheetFunction.Sum(exparray)

End Function

It works pretty well so far - it uses the trapezoid rule so it's pretty accurate.

And it works with most integrated excel functions.

For example: =INTEG("x^2+3*x+ln(x)",1,9) in a cell gives a value of 374.4416911.

I just thought I'd share that with anyone who might be able to use it.

Also, one problem I'm having with it is that any cell or function in the expression string that has the character "x" in it gives me an error. The reason this happens is that I used the replace function, and any time there is an x present it is replaced with the value that I wanted it to be evaluated at. The biggest issue here is that I can't use the EXP() function.

If anyone has any ideas about how to make this more eleagant, or to deal with the "x" issue, I'd really appreciate it. I'm pretty new to VBA so there easily could be a far more computationally efficient way to do this.

I'm using Excel 2010, by the way.