Solved

substitute parameters with values in Excel formula

Posted on 2015-02-07
3
60 Views
Last Modified: 2016-02-10
Dear Experts,

I am looking for a function (preferably) that would do the following:
- input: formula (string) or reference to a cell containing formula
- output: input formula (converted to string) but with parameters substituted with values

let's say I have a formula:
=sum(a1;a3;a5)
and cell a1=1, a3=3, a5=5
then the result should be =sum(1;3;5)

if the parameter is a range like in vlookup function, for example:
=vlookup(a1;a:a;3,0)
since second parameter is a range then it should remain unchanged.
the sample result should be in this case like:
=vlookup("pink";a:a;3,0)

is there a way (using VBA?) to achieve it in a relatively simple way?

thank you
Jarek
0
Comment
Question by:ja-rek
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
3 Comments
 
LVL 32

Expert Comment

by:Robberbaron (robr)
ID: 40596601
maybe.  the .FormulaLocal property returns the formula, the issue is in determining which items in the formula are parameters and which are constants.

ill run some tests using the () and commas as separators unless someone comes up with a better solution.
0
 
LVL 30

Assisted Solution

by:hnasr
hnasr earned 200 total points
ID: 40597252
This is not a simple question, so I am showing the idea.

Check this worksheet.
My settings use , as a list separator.
one for simple formual =A1
and another for Sum(A1,A2,A3)
formula-parse.xlsm
0
 
LVL 32

Accepted Solution

by:
Robberbaron (robr) earned 300 total points
ID: 40597412
my test as well.  
'ver 1  9.Feb.2015

Function MakeFormula(rng As Range) As String

    Dim ws As Worksheet, rawformula As String
    Dim aa As String, param() As String
    
    Set ws = rng.Worksheet
    
    rawformula = rng.FormulaLocal
    
    'find brackets
    bl = InStr(1, rawformula, "(")
    If bl > 1 Then
        'there is a formula
        MakeFormula = Left$(rawformula, bl)  'the first part before bracket
        
        br = InStrRev(rawformula, ")") - 1
        
        'get parameters
        param = Split(Mid$(rawformula, bl + 1, br - bl), ",")
        MakeFormula = MakeFormula & GetParamValue(param(0))
        For i = 1 To UBound(param)
            MakeFormula = MakeFormula & "," & GetParamValue(param(i))
        Next i
        MakeFormula = MakeFormula & Mid(rawformula, br + 1)
    Else
        MakeFormula = rawformula
    End If
    
    

End Function


Function GetParamValue(param As String) As String
    Dim aa As String, an As Integer, v As Variant
    On Error Resume Next
    Err.Clear
    If (InStr(param, ":")) Then
        'is a range definition itself
        'so return as text
        GetParamValue = param
        Exit Function
    End If
    
    v = Range(param).Value
    If Err > 0 Then
        'wasnt a valid range so return as strin
        GetParamValue = param
     Else
        If IsNumeric(v) Then
            GetParamValue = Str(v)
        ElseIf IsDate(v) Then
            GetParamValue = Format(v, "dd/mmm/yyyy hh:mm:ss")
        Else
            GetParamValue = Chr(34) & v & Chr(34)
        End If
            
        
    End If
End Function

Open in new window

makeparam.xlsm
0

Featured Post

Office 365 Training for IT Pros

Learn how to provision tenants, synchronize on-premise Active Directory, implement Single Sign-On, customize Office deployment, and protect your organization with eDiscovery and DLP policies.  Only from Platform Scholar.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Do you use a spreadsheet like Microsoft's Excel?  Have you ever wanted to link out to a non excel file on your computer or network drive?  This is the way I found to do it!
This article describes how to use a set of graphical playing cards to create a Draw Poker game in Excel or VB6.
Learn how to make your own table of contents in Microsoft Word using paragraph styles and the automatic table of contents tool. We'll be using the paragraph styles in Word’s Home toolbar to help you create a table of contents. Type out your initial …
This Micro Tutorial demonstrates in Microsoft Excel how to consolidate your marketing data by creating an interactive charts using form controls. This creates cool drop-downs for viewers of your chart to choose from.

726 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question