使用excel vba宏搜索并找到列标题

时间:2015-03-02 07:12:08

标签: excel vba excel-vba excel-2010

我有一张定期更新的工作表。因此列标题位置改变了regurlary。例如,如果今天"日期"在列J1中作为列标题,明天"日期"可以在C1栏中。因此,如果我想执行排序操作,使用宏作为日期,我不能使用硬编码的单元格引用来引用它,例如

cu.Range("J1").AutoFilter Field:=10, Criteria1:=">=" & Date

在excel中是否有办法搜索和查找列标题,例如日期。因此,在找到之后,我可以根据当前日期执行排序。

如何通过宏执行此操作?

2 个答案:

答案 0 :(得分:4)

您可以使用Find方法执行此操作。例如:

Dim rngDateHeader As Range
Dim rngHeaders As Range
Set rngHeaders = Range("1:1") 'Looks in entire first row; adjust as needed.
Set rngDateHeader = rngHeaders.Find("Date")

然后,您将使用rngDateHeader而不是硬编码的Range("J1")

答案 1 :(得分:0)

我喜欢Jean-Francois answer,并以此为基础构建了一个功能。希望对您有帮助!

功能

Function FindHeaderCol(rngHeaderRow, rngHeaderCol) As String
 Set rngHeaderRow = Range(rngHeaderRow)
 Set rngHeaderCol = rngHeaderRow.Find(rngHeaderCol)
 FindHeaderCol = Split(Cells(1, rngHeaderCol.Column).Address, "$")(1)
End Function

测试:(注意:在第1行的任意位置输入单词“ Test”作为列标题)

Sub Test()
 testcol = FindHeaderCol("1:1", "Test")
 MsgBox testcol
End Sub