我想知道是否有办法使用公式返回表格的名称?
我正在研究一种将数千个地址分解为相应信息列的方法。例如:#,街道,城市,州,邮编和电话号码。这些地址没有任何一致的格式可以使用“文本分列”工具。我最终想出了可以完成任务的公式,但它们非常冗长。在一篇文章中,我发现建议使用公式的重复部分作为定义名称。这使得工作变得更加容易。现在问题来了。
在一个名为“Table1”的表格中有效的公式在“Table2”或其他任何表格中都无法使用。每个表格的列标题都相同。
MAX(SEARCH(Table1[@State],Table1[@Origin]))
需要一种返回表格名称的方法。可以通过公式或定义名称的公式实现。
MAX(SEARCH(GetTableName[@State],GetTableName[@Origin]))
我希望您能提供公式。我不确定VBA解决方案是否是这个问题的正确答案,所以即使它可以工作,我也无法选择它作为“答案”。但仍将非常感激。如果我找不到公式解决方案,我会在另一篇帖子中询问。
TY
我发现了这篇帖子,它有一个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
=MyFunction(TableName,Field,someOtherValuesYouWant,....)
。这样,您就可以获得简单的“复制/粘贴”公式来使用,而不是无尽的公式 ;) - Dirk Reichel