使用公式返回表名?

使用公式返回表名?

我想知道是否有办法使用公式返回表的名称?

我正在研究一种方法,将几千个地址分解成信息透视列。即 #、街道、城市、州、邮政编码和电话号码。这些地址的格式不一致,文本到列无法工作。我终于想出了完成这项工作的公式,但它们太长了。在一篇文章中,我发现有人建议使用公式的重复部分作为定义的名称。这让事情变得容易多了。现在问题来了。

表格名称为“Table1”的公式不适用于“Table2”。或任何其他表格名称。每个表格的列标题都相同。

MAX(SEARCH(Table1[@State],Table1[@Origin]))

需要一种返回表名称的方法。通过公式或公式作为定义的名称。

MAX(SEARCH(GetTableName[@State],GetTableName[@Origin]))

我更喜欢公式。我不确定 VBA 解决方案是否是这个问题的正确答案,所以即使它确实有效,我也不能选择它作为答案。这仍然会很感激。如果我找不到公式解决方案,我会在另一篇文章中提问。

我发现这篇文章有一个 VBA 解决方案,但我不能使用它。我会发布它,这样有人也许可以解决这个问题。Portland Runner 发布了此代码来获取表名。

Function GetTableName(shtName As String) As String
    GetTableName = Worksheets(shtName).ListObjects(1).Name
End Function

在该函数中我输入名为“SheetName”的定义名称公式

=MID(CELL("filename"),FIND("]",CELL("filename"))+1,100)

所以我可以这样使用它。

=MAX(SEARCH(INDIRECT(GetTableName(SheetName)&"[@State]"),INDIRECT(GetTableName(SheetName)&"[@Origin]")))

但是我仍然需要这个只是公式。虽然我可以在我的电脑上运行宏,但它们不会在拥有所有数据的电脑上运行。

答案1

不要使用结构化引用,而应使用单元格引用。

州在 A 列,原产地在 B 列,第一行有列标题,使用=MAX(SEARCH(A2,B2))。将公式复制到具有相同布局的任何其他表格,单元格引用将会调整。

相关内容