How to select a column based on the column header in Excel?
Supposing, you have a large worksheet which contains multiple columns, and now, you would like to select the specific column based on a column header name. To find the column by column in a large worksheet will waste much time, this article, I will introduce a quick method to solve this job in Excel.
The following VBA code can help you to select the columns based on a specific header name, please do as this:
1. Hold down the ALT + F11 keys to open the Microsoft Visual Basic for Applications window.
2. Click Insert > Module, and paste the following code in the Module Window.
VBA code: Select column based on column header name:
Sub FindAddressColumn() 'Updateby Extendoffcie Dim xRg As Range Dim xRgUni As Range Dim xFirstAddress As String Dim xStr As String On Error Resume Next xStr = "Name" Set xRg = Range("A1:P1").Find(xStr, , xlValues, xlWhole, , , True) If Not xRg Is Nothing Then xFirstAddress = xRg.Address Do Set xRg = Range("A1:P1").FindNext(xRg) If xRgUni Is Nothing Then Set xRgUni = xRg Else Set xRgUni = Application.Union(xRgUni, xRg) End If Loop While (Not xRg Is Nothing) And (xRg.Address <> xFirstAddress) End If xRgUni.EntireColumn.Select End Sub
Note: In the above code, A1:P1 is the range of headers that you want to select columns from, and “Name” in the script xStr = "Name" is the header name that you want to select columns based on. Please change them to your need.
3. After copying and pasting the code, please press F5 key to run this code, and all the columns with the specific header name have been selected at once, see screenshot:
You are guest
or post as a guest, but your post won't be published automatically.
- To post as a guest, your comment is unpublished.· 14 days agoHi, looks great work. But I am getting the compile error: Argument not optional while highlighting the ". Union". What should I do?
- To post as a guest, your comment is unpublished.· 4 months agoThis is great, but what if I wanted to copy say, CustomerName, OrderNumber, OrderDate, FulfillmentDate, OrderStatus from Sheet1 with many more columns.
How do I only specify the columns that are needed to be copied to another sheet? This seems to only specify one column.
I have tried some things, but the problem is more where the columns are not necesarily in the same order on the source sheet. The source data in Sheet1 is pasted from the Windows clipboard to the Excel sheet.
It may be, CustomerName, OrderDate, OrderNumber, OrderStatusm FulfillmentDate or some other order.
I need them to be copied into a new sheet in a specific order as there are formulas in Sheet2 that are applied to what is copied from Sheet1 to Sheet2.
Other than shifting columns around after pasting from Windows clipboard, I can't figure this out.
Please help if possible.
Thank you kindly for the above though.
- To post as a guest, your comment is unpublished.· 3 months agoDim xRg As Range
Dim xRgUni As Range
Dim xFirstAddress As String
Dim xStr As String
Are variables being declared.
Hence to use the above code again for another column you would have to declare new variables.
Dim xRg2 As Range
Dim xRgUni2 As Range
Dim xFirstAddress2 As String
Dim xStr2 As String
And replace every instance of xRg with xRg2 in the code ect. Does that make sense?