ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Creating a UDF to search a cell's formula (https://www.excelbanter.com/excel-programming/444809-creating-udf-search-cells-formula.html)

kittronald

Creating a UDF to search a cell's formula
 
I'm trying to find a way to search for text in a cell's formula.

Is this something that could be done with a UDF ?

For example ...

SearchFormula(find_text,within_text) where find_text could be a
single value or a multi-valued named range.

If A1 contained =VLOOKUP(One,$A:$B,2,FALSE)

and C1=One, C2=Two, C3=Three

and $C$1:$C$3 was a named range called "Numbers"

The formula would look like =SEARCHFORMULA(Numbers,A1) and would
return a Boolean value of 1.

If a match wasn't found, it would return a Boolean value of 0.

Any ideas ?




- Ronald K.

kittronald

Creating a UDF to search a cell's formula
 
Made a mistake with the desired result.

The SEARCHFORMULA result should return the value found.

In the example above, if A1's formula contained the text "One", the
result should be "One".



- Ronald K.

Ron Rosenfeld[_2_]

Creating a UDF to search a cell's formula
 
On Sun, 24 Jul 2011 14:45:15 -0700 (PDT), kittronald wrote:

Made a mistake with the desired result.

The SEARCHFORMULA result should return the value found.

In the example above, if A1's formula contained the text "One", the
result should be "One".



- Ronald K.


Assuming you still want to return a zero if no match, then:

=========================
Option Explicit
Function SEARCHFORMULA(find_text As Range, within_text As Range) As Variant
Dim vFindText As Variant
Dim s As String
Dim i As Long
s = within_text.Formula
vFindText = find_text
SEARCHFORMULA = 0

For i = LBound(vFindText) To UBound(vFindText)
If InStr(1, s, vFindText(i, 1), vbTextCompare) 1 Then
SEARCHFORMULA = vFindText(i, 1)
Exit For
End If
Next i
End Function
==========================

kittronald

Creating a UDF to search a cell's formula
 
Ron,

That works !

Thanks for the late night save.



- Ronald K.

Ron Rosenfeld[_2_]

Creating a UDF to search a cell's formula
 
On Sun, 24 Jul 2011 21:28:50 -0700 (PDT), kittronald wrote:

Ron,

That works !

Thanks for the late night save.



- Ronald K.


Glad to help. Thanks for the feedback.

kittronald

Creating a UDF to search a cell's formula
 
Ron,

If you're still watching this thread, how could you use this
function within a macro ?



- Ronald K.

Ron Rosenfeld[_2_]

Creating a UDF to search a cell's formula
 
On Sun, 11 Sep 2011 18:00:55 -0700 (PDT), kittronald wrote:

Ron,

If you're still watching this thread, how could you use this
function within a macro ?



- Ronald K.


Just set your variable equal to the result of the formula:

v = SEARCHFORMULA(find_text As Range, within_text As Range)

kittronald

Creating a UDF to search a cell's formula
 
Ron,

Thanks for the quick response.

Could this function be adapted to search a formula in a defined name's
Refers to: field ?



- Ronald K.



Ron Rosenfeld[_2_]

Creating a UDF to search a cell's formula
 
On Tue, 13 Sep 2011 18:33:42 -0400, "kittronald" wrote:

Ron,

Thanks for the quick response.

Could this function be adapted to search a formula in a defined name's
Refers to: field ?



- Ronald K.


You can use a similar algorithm but you would have to rewrite it as it expects ranges to be passed as argument.

kittronald

Creating a UDF to search a cell's formula
 
Ron,

I've been trying to get
=SEARCHFORMULA(Numbers,ActiveSheet.Names("Numbers_ Formula").RefersTo) to
work.

However, given my limited development skills, it appears this is beyond
my ability.

Perhaps, there's another way.

Thanks for getting back to me.



- Ronald K.



kittronald

Creating a UDF to search a cell's formula
 
Ron,

I've tried the following, but the debugger keeps displaying a Run-
time error '13': Type mismatch.


Option Explicit
Function SEARCHFORMULA(find_text As Variant, within_text As Variant)
As Variant
Dim vFindText As Variant
Dim s As Variant
Dim i As Long
s = within_text
vFindText = find_text
SEARCHFORMULA = 0


For i = LBound(vFindText) To UBound(vFindText)
If InStr(1, s, vFindText(i, 1), vbTextCompare) 1 Then
SEARCHFORMULA = vFindText(i, 1)
Exit For
End If
Next i
End Function


What is it that I'm not setting correctly ?



- Ronald K.

Ron Rosenfeld[_2_]

Creating a UDF to search a cell's formula
 
On Sat, 24 Sep 2011 14:41:18 -0700 (PDT), kittronald wrote:

Ron,

I've tried the following, but the debugger keeps displaying a Run-
time error '13': Type mismatch.


Option Explicit
Function SEARCHFORMULA(find_text As Variant, within_text As Variant)
As Variant
Dim vFindText As Variant
Dim s As Variant
Dim i As Long
s = within_text
vFindText = find_text
SEARCHFORMULA = 0


For i = LBound(vFindText) To UBound(vFindText)
If InStr(1, s, vFindText(i, 1), vbTextCompare) 1 Then
SEARCHFORMULA = vFindText(i, 1)
Exit For
End If
Next i
End Function


What is it that I'm not setting correctly ?




Possibly find_text is not a range or an array. If it is not, then vFindText will not be an array, but rather just a simple variable.

kittronald

Creating a UDF to search a cell's formula
 
Ron,

When stepping through the code, the following line causes the error:

For i = LBound(vFindText) To UBound(vFindText)

When using SEARCHFORMULA as a UDF in a cell, Find_text is a named range
(i.e., Sheet1!$A$1:$A$5) and Within_text is the Refers to: field of a name.

The difference between using the SEARCHFORMULA UDF in a cell and in a
macro is the data type of Within_text.

The cell version uses a defined name for Within_text that contains a
text string (i.e. =CONCATENATE("SUM","PRODUCT")).

The macro version uses a name's Refers to: field.

How can I tell what data type is being expected ?




- Ronald K.



kittronald

Creating a UDF to search a cell's formula
 
Ron,

When stepping through the code, the following line causes the error:

For i = LBound(vFindText) To UBound(vFindText)

When using SEARCHFORMULA as a UDF in a cell, Find_text is a named range
(i.e., Sheet1!$A$1:$A$5) and Within_text is the Refers to: field of a name.

The difference between using the SEARCHFORMULA UDF in a cell and in a
macro is the data type of Within_text.

The cell version uses a defined name for Within_text that contains a
text string (i.e. =CONCATENATE("SUM","PRODUCT")).

The macro version uses a name's Refers to: field.

How can I tell what data type is being expected ?




- Ronald K.




All times are GMT +1. The time now is 11:54 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com