我想知道是否有任何方法可以使用公式返回表的名称?
我正在研究一种将几千个地址分解为透视信息列的方法。即.. #、街道、城市、州、邮政编码和电话号码。这些地址不是文本到列可以工作的任何一致格式。我终于想出了完成工作的公式,但是很长。在一篇文章中,我发现它建议使用公式的重复部分作为定义名称。它使它变得如此容易。现在问题来了。
具有表名“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]")))
但是我仍然需要这是仅公式。虽然我可以在我的电脑上运行宏,但它们不会在拥有所有数据的电脑上运行。
这是我使用 UDF 得到的最后一件事。不幸的是,我仍然无法使用它。另外,它获取第一个表格的名称,而不是单元格所在的实际表格。如果这是工作表中唯一的表格,或者第一个表格是您想要的表格,那就太好了。
Function GetTableName() As String
GetTableName = Worksheets(ActiveSheet.Name).ListObjects(1).Name
End Function