I have the following code to select a column based on header.
Dim rng1 As Range
Set rng1 = Range(Range(\"A1:Z1\").Find(\"Name\"), Range(\"A1:Z1\").Find(\"Nam
Just a revision to Siddharth's Answer (which was excellent). This code will iterate through all the rows in the specified sheet until it finds the row with the specified column header:
Sub Sample()
Dim ws As Worksheet
Dim lRow As Long
Dim aCell As Range, rng1 As Range
Dim i As Integer
'~~> Set this to the relevant worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
i = 1
'Iterate through the rows until the target name is found
For i = 1 To ActiveSheet.UsedRange.Rows.Count
With ws
'~~> Find the cell which has the name - build range with current iterator
Set aCell = .Range("A" & i & ":Z" & i).Find("Name")
'~~> If the cell is found
If Not aCell Is Nothing Then
'Set iterator equal to rows to satisfy For...Next
i = ActiveSheet.UsedRange.Rows.Count
'~~> Get the last row in that column and check if the last row is > 1
lRow = .Range(Split(.Cells(, aCell.Column).Address, "$")(1) & .Rows.Count).End(xlUp).Row
If lRow > 1 Then
'~~> Set your Range
Set rng1 = .Range(aCell.Offset(1), .Cells(lRow, aCell.Column))
'~~> This will give you the address
Debug.Print rng1.Address
End If
End If
End With
Next i
End Sub
Just wanted to slightly improve on the previous answer! This works quite well.