所以我的电子表格中包含不同的数据列。其中一列标题为“States”,它有该列中不同状态的缩写。另一列标题为“Last_IVR”,它或者有行说“已完成”或者说“未完成”。我编写了一个代码,根据状态或是否完成来过滤这两列。但我遇到的一个问题是并非每个电子表格都将States列放在同一位置。我的意思是,在第一个工作表中,“States”在“F”列中,但在另一个电子表格中,“States”可以在“C”列中。那么有没有办法,我可以操作下面的代码,所以它指的是列标题而不是列号。提前感谢您的帮助。
Sub CFunctions()
Dim LR As Long
LR = Range("A" & Rows.Count).End(xlUp).Row
Dim i As Long
Dim State As Range
Dim Last_IVR As Range
'Removes rows that says "Complete"
For i = LR To 2 Step -1
Set Last_IVR = Range("G" & i)
If InStr(Last_IVR, "Complete") >= 1 Then
Rows(i).Delete
End If
Next i
'Removes all states that are not "TX"
For i = LR To 2 Step -1
Set State = Range("F" & i)
If InStr(State, "TX") = 0 Then
Rows(i).Delete
End If
Next i
MsgBox "Completed"
End Sub
答案 0 :(得分:0)
您可以像使用电子表格功能一样使用匹配来搜索第一行中的标题。
语法和更多属性可以在这里找到: https://msdn.microsoft.com/en-us/library/office/ff835873%28v=office.15%29.aspx 或者在这里: Application.WorksheetFunction.Match method
一旦索引返回给您形成匹配函数,您可以使用该数字来引用单元格(x,y)表示法中的范围。
Application.worksheetfunction.match("State", [range referencing rows of headers],0)
答案 1 :(得分:0)
我有这个函数,当你输入它作为参数的数字时会返回列字母:
Function Col_Letter(lngCol As Integer) As String
'Returns the column letter using its number as parameter
Dim vArr
vArr = Split(Cells(1, lngCol).Address(True, False), "$")
Col_Letter = vArr(0)
End Function
希望这有帮助!