我有一张定期更新的工作表。因此列标题位置改变了regurlary。例如,如果今天"日期"在列J1中作为列标题,明天"日期"可以在C1栏中。因此,如果我想执行排序操作,使用宏作为日期,我不能使用硬编码的单元格引用来引用它,例如
cu.Range("J1").AutoFilter Field:=10, Criteria1:=">=" & Date
在excel中是否有办法搜索和查找列标题,例如日期。因此,在找到之后,我可以根据当前日期执行排序。
如何通过宏执行此操作?
答案 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