Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
Solved

# Checking & Validating Excel Formulas

Posted on 2012-03-15
Medium Priority
262 Views
Hello Experts,

I need to establish some validation and checking rules for formulas in an Excel sheet.

Specifically, I need to check that the row number in a given formula is the same as the actual row of the cell containing the formula, and be able to raise a flag if not.

So what I really need is a way (or perhaps a function) for reading the row refered to in the formula

For example, applying this function on below formula will give me 16

=SUM(Sheet2!H16:J16)

Assuming the function is called GetRowNumber() and the formula is in Cell B16, I need to place a checking formula on the same row like this:

=If(GetRowNumber(B16) <> ActiveCell.Row(), "Mismatch Row in formula", "Formula is OK")

The above is my suggested way for validating my formulas, please feel free to offer a better approach or best practice (if you will)

Thank you,
Hani
0
Question by:Mehawitchi
[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
• 5
• 4

LVL 24

Expert Comment

ID: 37724323
Do your formulas vary? Or are all they of the form SUM(A1:B1)?
0

Author Comment

ID: 37724415
Thank you Stephen for your query.

Below are 3 samples of the actual formulas:
=SUM(Corporate:Panorama!D57)
=SUM(Corporate:Panorama!E57)
=SUM(Corporate:Panorama!F65)

As you can see, only the column and row references vary, but the part "SUM(Corporate:Panorama!" is fixed.

Hope this helps.

Thanks again,
Hani
0

LVL 24

Expert Comment

ID: 37724442
Hani - try this:
``````Function GetRowNumber(rIn As Range) As String

Dim s As String

s = rIn.Formula

With CreateObject("VBScript.RegExp")
.Global = True
.IgnoreCase = False
.Pattern = "([A-Z]+)(\d+)"
If CLng(.Execute(s)(0).Submatches(1)) = Application.Caller.Row Then
GetRowNumber = "OK"
Else
GetRowNumber = "Wrong"
End If
End With

End Function
``````
So you would type =GetRowNumber(B16) in a cell etc.
0

Author Comment

ID: 37724573
Hi Stephen,

I don't think the function is working properly. The result is always "Wrong"  whether or not the formula is right.

I tried executing the "CLng(.Execute(s)(0).Submatches(1))" statement in the debugger's Immediate window but I'm getting a compilers error

Did it work at your end?
0

LVL 24

Expert Comment

ID: 37724592
Yes worked for me. Can you post a small workbook?
0

Author Comment

ID: 37724638
Please check column "P" in "Total" sheet
Sample-File.xlsm
0

LVL 24

Accepted Solution

StephenJR earned 2000 total points
ID: 37724669
Try just changing line 10 to
``````.Pattern = "(\![A-Z]+)(\d+)"
``````
0

Author Closing Comment

ID: 37724740
Thank you Stephan - It worked perfectly
0

LVL 24

Expert Comment

ID: 37724747
My pleasure.
0

## Featured Post

Question has a verified solution.

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

Excel can be a tricky bit of software to get your head around. Whilst youâ€™ll be able to eventually get to grips with the basic understanding of how to get by, there are a few Excel tips that not everybody will even know about let alone know how to dâ€¦
After seeing numerous questions for Dynamic Data Validation I notice that most have used Visual Basic to solve the problem. This suggestion is purely formula based and can be used in multiple rows.
This Micro Tutorial will demonstrate how to use a scrolling table in Microsoft Excel using the INDEX function.
This Micro Tutorial will demonstrate how to create pivot charts out of a data set. I also added a drop-down menu which allows to choose from different categories in the data set and the chart will automatically update.
###### Suggested Courses
Course of the Month6 days, 3 hours left to enroll