我链接Get a first column range from a range in Excel VBA来掩盖内容。
我的问题是:
如果我知道列名,是否可以知道列号?例如:我想知道在名为“ mytable”的表中名为“ mycolumn”的列是否为数字1或2或3或x ...
致谢
答案 0 :(得分:1)
Range("mycolumn").cells(1,1).column
将为您提供名为“ mycolumn”的范围内第一列的编号。
编辑:我的错-我没有看到这是表中的命名列-Axel在注释中的答案是正确的。
答案 1 :(得分:0)
...如果名为“ mycolumn”的列是名为“ mytable”的表中的数字1或2或3或x...。
要查找列在其父表中的顺序位置,您只需查看表的范围,而不是表所在的工作表即可。
在工作表上,
=MATCH("mycolumn", mytable[#Headers], 0)
在下图中,上面的公式返回3。
在VBA中作为功能,
Option Explicit
Sub main()
Debug.Print ColumnNdx("sheet2", "mytable", "mycolumn")
End Sub
Function ColumnNdx(wsnm as string, tblnm As String, colnm As String)
Dim m As Variant, hdrrng As Range
ColumnNdx = CVErr(xlErrNA)
Set hdrrng = ThisWorkbook.Worksheets(wsnm ).ListObjects(tblnm).HeaderRowRange
m = Application.Match(colnm, hdrrng, 0)
If Not IsError(m) Then ColumnNdx = CLng(m)
End Function
上面的函数返回3。