我有一个名为 MyTable 的结构化表和名为 MyColumn 的列。
MyColumn
aaa
bbb
ccc
我可以编写 Excel 公式来作用于我选择的该表的某些部分,如下所示:=Counta([MyTable][#All]) =Counta(FeaturesTbl[#Headers])
我想要的是一个 Excel 公式,它将返回我所选单元格的结构化表格文本。像这样:
= MyFormula(SomeCellsISelected) 如果我选择了包括标题在内的整个表格,则应该返回:“[MyTable][#All]”。
我想要这个公式的原因是这个表来自 power query 步骤,它的名称可能会不时更改而用户却不知道。因此我想向用户显示当前表名是什么,并在我的 VBA 步骤中动态使用它。
但是,我想要一个原生的 Excel 公式。
我尝试查看 CELL(),但到目前为止,它没有返回目标单元格的结构化表引用。
有任何想法吗?
答案1
有几种方法可以获取表名。
- 所有可用的表均列在中
Name Box
。 - 表格的名称也可以在其中找到
Formula Bar
。
但是从当前工作簿中获取所有表的名称的最有效的方法是 VBA 宏。
怎么运行的:
打Alt+F11打开 VB 编辑器窗口。
从 VB 编辑器的窗口菜单中,单击我然后插入 米模块。
C奥皮&磷下面显示的是 VBA 代码。
Sub ListAllTables() Dim xTable As ListObject Dim xSheet As Worksheet Dim I As Long I = -1 Sheets.Add.Name = "Table Name" For Each xSheet In Worksheets For Each xTable In xSheet.ListObjects I = I + 1 Sheets("Table Name").Range("A1").Offset(I).Value = xTable.Name Next xTable Next End Sub
注意:
在此代码中,表格列表(A1)的新工作表名称和单元格引用是可编辑的。
按Alt+Q 返回文件。
将工作簿另存为米acro 已启用。
最后R联合国宏观。
您将获得一个名为的新工作表Table Name
和表格列表。
:编辑:
如果您想使用单元格引用一次获取一个表名,那么您可以使用这个 UDF(用户定义函数)。
Function GetTableName(cellInTable As Range) As String
Dim tblName As String
tblName = vbNullString
On Error Resume Next
tblName = cellInTable.ListObject.Name
GetTableName = tblName
End Function
怎么运行的:
- C奥皮&磷将此 VBA 代码粘贴为模块。
- 使用以下公式:
=GetTableName(H28)
H28
表格起始位置最左上角单元格的单元格引用在哪里。
使用公式来获取表的名称有点复杂,因为它一次只能处理一个表,但您可以使用这个。
怎么运行的:
在任何空白单元格中,例如
J37
,输入=
符号并单击表格最左上角的单元格,例如= and then click H28
。你明白了
=Table6[[#Headers],[data]]
。最后使用这个公式:
=MID(FORMULATEXT(J37),2,FIND("[",FORMULATEXT(J37))-2)
您将获得表名称。
根据需要调整公式中的单元格引用。