Got any Excel/VBA Questions? Free Excel Help
This UDF will look in the first column in a Table or Range for the N'th occurrence of a specified value, then look in a nominated column for another specified value on the same row. It will then return the result from the same row in a specified column.
Function FindNth(Table As Range, Val1 As Variant,Val1Occrnce As Integer, _ Val2 As Variant,Val2Col As Integer, ResultCol As Integer) ''''''''''''''''''''''''''''''''''''''' 'Written by OzGrid Business Applications 'www.ozgrid.com 'Finds the N'th value in the first Column of a table that has a stated _ value on the same row in another Column. ''''''''''''''''''''''''''''''''''''''' Dim i As Integer Dim iCount As Integer Dim rCol As Range For i = 1 To Table.Rows.Count If Table.Cells(i, 1) = Val1 And _ Table.Cells(i, Val2Col) = Val2 Then iCount = iCount + 1 End If If iCount = Val1Occrnce Then FindNth = Table.Cells(i, ResultCol) Exit For End If Next i End Function
To use this function, push Alt+F11 and go to Insert>Module. Paste in the code, push Alt+Q and save. Use the function as shown in graphic example. You can access it under "User Defined" in the Paste Function (Shift+F3).
The Table range is A1:E12
"Dog" is the value to find in the first column of A1:E12
2 is the occurrence of "Dog" to find in the first Column of A1:E12
"Male" is second value to find
3 is the relative position of the column in A1:E12 to find "Male"
5 is the relative position in the column to return our result from
In other words, find the second occurrence of a Male Dog and return the result from the same row in the fifth column. It is important that the code is case sensitive. This can be overcome by using:
Option Compare Text
Placed at the top of the module.
|Index to Excel VBA Code|
|Excel Custom Function: Sum Top/Bottom X Numbers In 1 Column or Row|
|Show/Hide a Custom Toolbar & Remove/Restore Excel's Toolbars|
|Track/Report User Changes on an Excel Worksheet/Workbook|
|Transfer Multi-Select ListBox To Range Of Cells|
|Transpose Rows Into Columns|