我想在表格中找到具有特定标题的列,其中几乎所有标题都已合并。这是一个示例,其中包含我的表格的虚拟数据:
我已尝试查找第1行和第2行(范围A1:XFD1
和A2:XFD2
),但似乎vba无法找到我要查找的列:
Sub getColumn()
Dim ColNum As Integer
On Error Resume Next
ColNum = Workbooks(ActiveWorkbook.Name).Worksheets("Data").Range("A1:XFD1").Find(What:="Unit Cost", LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False, SearchFormat:=False).Column
MsgBox ("Column number is: " & ColNum)
End Sub
谢谢。
答案 0 :(得分:2)
您只需要更改
即可<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
<select id="colorSelect">
<option selected disabled>Text-Align : </option>
<option value="1">Red</option>
<option value="2">Blue</option>
<option value="3">Green</option>
</select>
<input type="button" id="testButton" value="Test Button"/>
到
.Worksheets("Data").Range("A1:XFD1")
因为您确实要搜索2行
答案 1 :(得分:1)
你可以试试这个:
.Worksheets("Data").Range("A1:XFD2")
我没有测试过,但它应该可以工作...... :) 你只需循环遍历你的范围并检查每一列是否合并。然后你给MsgBox。
答案 2 :(得分:1)
由于Workbooks(ActiveWorkbook.Name)
与ActiveWorkbook
相同,而后者是默认隐式工作簿资格,您可以简单地编写以下帮助函数:
Function GetColumn(stringToFind As String) As Long
On Error Resume Next
GetColumn = Worksheets("Data").Rows("1:2").Find(What:=stringToFind, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False, SearchFormat:=False).Column
End Function
将在您的“主要”子资源中被利用,如下所示:
Sub main()
Dim colNum As Long
colNum = GetColumn("Unit Cost") '<--| returns 0 if "Unit Cost" is not found
End Sub
答案 3 :(得分:0)
只需遍历您的列和行
Sub findHeader()
For i = 1 To 5
If Cells(1, i).Value = "Unit Cost" Then
MsgBox Cells(1, i).Value
End If
Next i
End Sub
答案 4 :(得分:0)
Application.Match
找到您的单位费用列。
dim colm as variant
with activesheet
colm = application.match("unit cost", .rows(1), 0)
if not iserror(colm) then
debug.print colm 'column as number
else
colm = application.match("unit cost", .rows(2), 0)
if not iserror(colm) then
debug.print colm 'column as number
else
debug.print "not found"
end if
end if
end if