从Excel VBA中的范围获取列范围数
我链接到不理解的内容 我的问题是: 如果我知道该列的名称,是否可以知道该列的编号?例如:我想知道名为mycolumn的列是否是数字1或2或3或x。。。在名为mytable的表中 关于范围mycolumn.cells1,1.column将为您提供称为mycolumn的范围中第一列的编号 编辑:我的错-我没有看到这是表中的命名列-Axel在注释中的回答是正确的 。。。如果名为mycolumn的列是数字1或2或3或x。。。在名为mytable的表中 要查找列在其父表中的顺序位置,只需查看表的范围,而不需要查看表所在的工作表 在工作表上从Excel VBA中的范围获取列范围数,excel,vba,Excel,Vba,我链接到不理解的内容 我的问题是: 如果我知道该列的名称,是否可以知道该列的编号?例如:我想知道名为mycolumn的列是否是数字1或2或3或x。。。在名为mytable的表中 关于范围mycolumn.cells1,1.column将为您提供称为mycolumn的范围中第一列的编号 编辑:我的错-我没有看到这是表中的命名列-Axel在注释中的回答是正确的 。。。如果名为mycolumn的列是数字1或2或3或x。。。在名为mytable的表中 要查找列在其父表中的顺序位置,只需查看表的范围,而不
=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
对于表格,您可以在工作表或表格中找到匹配项。链接问题与命名表格中的命名列无关。如果在您的案例中它确实是命名表中的命名列,那么可能会有帮助:c=.Rangemytable[mycolumn].column。对于我的案例,正确的答案来自user10798192。唯一的问题是我不知道如何在代码中插入它。