Excel 公式:将结构化表的名称转换为文本

Excel 公式:将结构化表的名称转换为文本

我有一个名为 MyTable 的结构化表和名为 MyColumn 的列。

MyColumn
aaa
bbb
ccc

我可以编写 Excel 公式来作用于我选择的该表的某些部分,如下所示:=Counta([MyTable][#All]) =Counta(FeaturesTbl[#Headers])

我想要的是一个 Excel 公式,它将返回我所选单元格的结构化表格文本。像这样:

= MyFormula(SomeCellsISelected) 如果我选择了包括标题在内的整个表格,则应该返回:“[MyTable][#All]”。

我想要这个公式的原因是这个表来自 power query 步骤,它的名称可能会不时更改而用户却不知道。因此我想向用户显示当前表名是什么,并在我的 VBA 步骤中动态使用它。

但是,我想要一个原生的 Excel 公式。

我尝试查看 CELL(),但到目前为止,它没有返回目标单元格的结构化表引用。

有任何想法吗?

答案1

有几种方法可以获取表名。

  1. 所有可用的表均列在中Name Box
  2. 表格的名称也可以在其中找到Formula Bar

但是从当前工作簿中获取所有表的名称的最有效的方法是 VBA 宏。

怎么运行的:

  1. Alt+F11打开 VB 编辑器窗口。

  2. 从 VB 编辑器的窗口菜单中,单击然后插入 模块。

  3. 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)的新工作表名称和单元格引用是可编辑的。

  1. Alt+Q 返回文件。

  2. 将工作簿另存为acro 已启用。

  3. 最后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)
    
  • 您将获得表名称。

根据需要调整公式中的单元格引用。

相关内容