Function HMatchIf(Val1, Row1, Optional Wb = "This", Optional Shee = "Active", Optional StartFromCol = "A", Optional ColumnNumber = 0)
' Horizontal MatchIf, returning column number and not column name
' Returns column name by default (or "" if not found), if you need column number (or 0 if not found), ColumnNumber should be 1
' Needs CutString
If Wb = "This" Then Wb = ThisWorkbook.Name
If Wb = "Active" Then Wb = ActiveWorkbook.Name
If Shee = "Active" Then Shee = ActiveSheet.Name
If ColumnNumber = 0 Then HMatchIf = ""
If ColumnNumber = 1 Then HMatchIf = 0
Row1End = GetColumnName(Workbooks(Wb).Worksheets(Shee).Range("A1").Offset(, Workbooks(Wb).Worksheets(Shee).Range("A1").EntireRow.Columns.Count - 1).Address) & Row1
CoCo1 = WorksheetFunction.CountIf(Workbooks(Wb).Worksheets(Shee).Range(StartFromCol & Row1, Row1End), Val1)
If CoCo1 = 0 Then Exit Function
On Error Resume Next
Err.Clear
LastOne = WorksheetFunction.Match(Val1, Workbooks(Wb).Worksheets(Shee).Range(StartFromCol & Row1, Row1End), 0) + Range(StartFromCol & 1).Column - 1
If Err.Number = 0 Then GoTo GotIt
Err.Clear
LastOne = WorksheetFunction.Match(Val(Val1), Workbooks(Wb).Worksheets(Shee).Range(StartFromCol & Row1, Row1End), 0) + Range(StartFromCol & 1).Column - 1
If Err.Number = 0 Then GoTo GotIt
Err.Clear
LastOne = WorksheetFunction.Match(CStr(Val1), Workbooks(Wb).Worksheets(Shee).Range(StartFromCol & Row1, Row1End), 0) + Range(StartFromCol & 1).Column - 1
If Err.Number = 0 Then GoTo GotIt
Err.Clear
On Error GoTo 0
Exit Function
GotIt:
Err.Clear
On Error GoTo 0
If ColumnNumber = 1 Then Rett = LastOne
If ColumnNumber = 0 Then Rett = CutString(Range(Cells(1, LastOne).Address).Address(True, False), "", "$")
HMatchIf = Rett
End Function
' Horizontal MatchIf, returning column number and not column name
' Returns column name by default (or "" if not found), if you need column number (or 0 if not found), ColumnNumber should be 1
' Needs CutString
If Wb = "This" Then Wb = ThisWorkbook.Name
If Wb = "Active" Then Wb = ActiveWorkbook.Name
If Shee = "Active" Then Shee = ActiveSheet.Name
If ColumnNumber = 0 Then HMatchIf = ""
If ColumnNumber = 1 Then HMatchIf = 0
Row1End = GetColumnName(Workbooks(Wb).Worksheets(Shee).Range("A1").Offset(, Workbooks(Wb).Worksheets(Shee).Range("A1").EntireRow.Columns.Count - 1).Address) & Row1
CoCo1 = WorksheetFunction.CountIf(Workbooks(Wb).Worksheets(Shee).Range(StartFromCol & Row1, Row1End), Val1)
If CoCo1 = 0 Then Exit Function
On Error Resume Next
Err.Clear
LastOne = WorksheetFunction.Match(Val1, Workbooks(Wb).Worksheets(Shee).Range(StartFromCol & Row1, Row1End), 0) + Range(StartFromCol & 1).Column - 1
If Err.Number = 0 Then GoTo GotIt
Err.Clear
LastOne = WorksheetFunction.Match(Val(Val1), Workbooks(Wb).Worksheets(Shee).Range(StartFromCol & Row1, Row1End), 0) + Range(StartFromCol & 1).Column - 1
If Err.Number = 0 Then GoTo GotIt
Err.Clear
LastOne = WorksheetFunction.Match(CStr(Val1), Workbooks(Wb).Worksheets(Shee).Range(StartFromCol & Row1, Row1End), 0) + Range(StartFromCol & 1).Column - 1
If Err.Number = 0 Then GoTo GotIt
Err.Clear
On Error GoTo 0
Exit Function
GotIt:
Err.Clear
On Error GoTo 0
If ColumnNumber = 1 Then Rett = LastOne
If ColumnNumber = 0 Then Rett = CutString(Range(Cells(1, LastOne).Address).Address(True, False), "", "$")
HMatchIf = Rett
End Function
Val1, Row1, Optional Wb, Optional Shee, Optional StartFromCol, Optional ColumnNumber
Views 3,746
Downloads 1,278
CodeID
DB ID