如何在 Excel 宏中使用对列的结构化引用?

如何在 Excel 宏中使用对列的结构化引用?

以下示例可以解释这一情况:

Sheets("Plot Data July").Select
    ActiveSheet.ListObjects("tPDJuly").Range.AutoFilter Field:=2
    ActiveSheet.ListObjects("tPDJuly").Range.AutoFilter Field:=4

因此,如上所示,Field:=2这是对表中第二个字段“tPDJuly”的相对引用。因此,现在如果我添加更多列,这个数字不会更新。该字段在表中实际上称为“Grade”。那么有没有一种方法可以对其进行编码,以便无论它位于哪一列,“Grade”始终会更新?

我想一个解决方案就是我们添加一行来查找“年级”的列号是多少?

更新:这是完整声明

Sheets("Plot Data July").Select
    ActiveSheet.ListObjects("tPDJuly").Range.AutoFilter Field:=4, Criteria1:="0"
    ActiveSheet.ListObjects("tPDJuly").Range.AutoFilter Field:=2, Criteria1:="J4"

该表中的Field:=4字段实际上在哪里,即同样是ExcludetPDJuly[Exclude]Field:=2Grade

所以我想将这些固定的引用改为更灵活的2引用4

答案1

将这个线程拖回生活中。我今天一直在尝试自己实现一些目标,通过蛮力和反复试验,我找到了一个答案,它不涉及混乱的选择语句或激活的工作表。

TableName.Range.Autofilter Field:=TableName.ListColumns("Column Name").Index, _
    Criteria1:="SearchString"

答案2

您应该能够使用以下表属性来选择一列:

sheets("Plot Data July").select    
range("tPDJuly[Grade]").select

这应该会选择您的成绩列。将值连接成引用时,引号似乎很重要。

如果您想要两列,则需要稍微改变一下:

sheets("Plot Data July").select    
range("tPDJuly[Grade],tPDJuly[Column4]").select

相关内容