ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Using parts of a defined range for UDF (https://www.excelbanter.com/excel-programming/405347-using-parts-defined-range-udf.html)

Hoss

Using parts of a defined range for UDF
 
Hi,
I have been banging my head against the wall trying to figure out how to use
parts of a range for an udf. I am trying to merge Index and Match into one
function where there is only 3 inputs. The point of this is to trim down the
over head. My thought was that if I could difine parts of that defined range
in VB thus not having to define 3 areas in the workbook. I am fairly new to
VB and have been learning as I go so the answer may be really obvious and I
am just not seeing it. Here is my code:
Excel 2003

Function IndexMatch(Table, VSearch, HSearch)
Dim Table1 As Object
Set Table1 = Range("Table").Offset(1, 1).Resize(Table.Rows.Count - 1,
Table.Columns.Count - 1)
Application.Volatile
Dim Table2 As Object
Set Table2 = Range("Table").Columns(2, 1)
Dim Table3 As Object
Set Table3 = Range("Table").Rows(1, 2)
IndexMatch = WorksheetFunction.Index(TableA,
WorksheetFunction.Match(VSearch, Table2, False),
WorksheetFunction.Match(HSearch, Table3, False))
End Function

Table is to be the table which includes row identifiers and headers to
reference. I am then trying to in effect split that one defined area into 3
areas where one is the header one is the Column for Row identifiers and the
other is the Data. Thanks for you help in advance, it is much appreciated.

Hoss

Tim Zych

Using parts of a defined range for UDF
 
I don't really follow the table structure, but perhaps this adjustment will
help. It treats the first col and first row as the V and H Search columns.

Function IndexMatch(Table As Range, VSearch As Variant, HSearch As Variant)
As Variant
Application.Volatile
Dim Table2 As Range
Set Table2 = Table.Columns(1)
Dim Table3 As Range
Set Table3 = Table.Rows(1)
IndexMatch = Application.Index(Table, _
Application.Match(VSearch, Table2, 0), _
Application.Match(HSearch, Table3, 0))
End Function


--
Tim Zych
SF, CA

"Hoss" wrote in message
...
Hi,
I have been banging my head against the wall trying to figure out how to
use
parts of a range for an udf. I am trying to merge Index and Match into
one
function where there is only 3 inputs. The point of this is to trim down
the
over head. My thought was that if I could difine parts of that defined
range
in VB thus not having to define 3 areas in the workbook. I am fairly new
to
VB and have been learning as I go so the answer may be really obvious and
I
am just not seeing it. Here is my code:
Excel 2003

Function IndexMatch(Table, VSearch, HSearch)
Dim Table1 As Object
Set Table1 = Range("Table").Offset(1, 1).Resize(Table.Rows.Count - 1,
Table.Columns.Count - 1)
Application.Volatile
Dim Table2 As Object
Set Table2 = Range("Table").Columns(2, 1)
Dim Table3 As Object
Set Table3 = Range("Table").Rows(1, 2)
IndexMatch = WorksheetFunction.Index(TableA,
WorksheetFunction.Match(VSearch, Table2, False),
WorksheetFunction.Match(HSearch, Table3, False))
End Function

Table is to be the table which includes row identifiers and headers to
reference. I am then trying to in effect split that one defined area into
3
areas where one is the header one is the Column for Row identifiers and
the
other is the Data. Thanks for you help in advance, it is much
appreciated.

Hoss




Hoss

Using parts of a defined range for UDF
 
Thanks Tim this worked perfectly.

"Tim Zych" wrote:

I don't really follow the table structure, but perhaps this adjustment will
help. It treats the first col and first row as the V and H Search columns.

Function IndexMatch(Table As Range, VSearch As Variant, HSearch As Variant)
As Variant
Application.Volatile
Dim Table2 As Range
Set Table2 = Table.Columns(1)
Dim Table3 As Range
Set Table3 = Table.Rows(1)
IndexMatch = Application.Index(Table, _
Application.Match(VSearch, Table2, 0), _
Application.Match(HSearch, Table3, 0))
End Function


--
Tim Zych
SF, CA

"Hoss" wrote in message
...
Hi,
I have been banging my head against the wall trying to figure out how to
use
parts of a range for an udf. I am trying to merge Index and Match into
one
function where there is only 3 inputs. The point of this is to trim down
the
over head. My thought was that if I could difine parts of that defined
range
in VB thus not having to define 3 areas in the workbook. I am fairly new
to
VB and have been learning as I go so the answer may be really obvious and
I
am just not seeing it. Here is my code:
Excel 2003

Function IndexMatch(Table, VSearch, HSearch)
Dim Table1 As Object
Set Table1 = Range("Table").Offset(1, 1).Resize(Table.Rows.Count - 1,
Table.Columns.Count - 1)
Application.Volatile
Dim Table2 As Object
Set Table2 = Range("Table").Columns(2, 1)
Dim Table3 As Object
Set Table3 = Range("Table").Rows(1, 2)
IndexMatch = WorksheetFunction.Index(TableA,
WorksheetFunction.Match(VSearch, Table2, False),
WorksheetFunction.Match(HSearch, Table3, False))
End Function

Table is to be the table which includes row identifiers and headers to
reference. I am then trying to in effect split that one defined area into
3
areas where one is the header one is the Column for Row identifiers and
the
other is the Data. Thanks for you help in advance, it is much
appreciated.

Hoss






All times are GMT +1. The time now is 08:52 PM.

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