我想知道是否有使用公式返回表名的方法?
我正在研究一种将几千个地址分解为信息透视图列的方法。即#,街道,城市,州,邮政编码和电话号码。地址的格式与“文本到列”的格式不一致。我终于想出了公式来完成工作,但是时间很长。在一篇帖子中,我发现它建议将公式的重复部分用作“定义的名称”。而且它变得非常容易。现在这是问题所在。
表名称为“ Table1”的公式在“ Table2”中不起作用。或任何其他表名。每个表的列标题都相同。
MAX(SEARCH(Table1[@State],Table1[@Origin]))
Run Code Online (Sandbox Code Playgroud)
需要一种返回表名的方法。通过公式或公式作为“已定义名称”。
MAX(SEARCH(GetTableName[@State],GetTableName[@Origin]))
Run Code Online (Sandbox Code Playgroud)
我更喜欢将其作为公式。我不确定VBA解决方案是否是该问题的正确答案,因此即使它确实起作用,我也无法选择它作为THE答案。仍将不胜感激。我将在另一篇文章中询问我是否找不到公式解决方案。
TY
我发现此帖子具有VBA解决方案,但无法使用。我将发布帖子,以便有人可以弄清楚。Portland Runner发布此CODE以获取表名。
Function GetTableName(shtName As String) As String
GetTableName = Worksheets(shtName).ListObjects(1).Name
End Function
Run Code Online (Sandbox Code Playgroud)
在该函数中,输入名为“ SheetName”的“我的定义名称”公式
=MID(CELL("filename"),FIND("]",CELL("filename"))+1,100)
Run Code Online (Sandbox Code Playgroud)
所以我可以这样使用它。
=MAX(SEARCH(INDIRECT(GetTableName(SheetName)&"[@State]"),INDIRECT(GetTableName(SheetName)&"[@Origin]")))
Run Code Online (Sandbox Code Playgroud)
但是,我仍然需要将此设置为“仅限公式”。虽然我可以在PC上运行宏,但它们不会在包含所有数据的PC中运行。
这是我使用UDF的最后一件事。不幸的是我仍然不能使用它。Plus它获得第一个表的名称,而不是单元格所在的实际表。如果该表是工作表中唯一的表,或者第一个表是您想要的表,则它很好。
Function GetTableName() As String
GetTableName = Worksheets(ActiveSheet.Name).ListObjects(1).Name
End Function
Run Code Online (Sandbox Code Playgroud) Dog Cat Bird Gary
A 0 C 100%
B 0 B
C ok D 100%
D ok 100%
E no A
F ok F 100%
Run Code Online (Sandbox Code Playgroud)
是否可以通过列号/位置而不是列标题来引用第一列第二或第三列?所以代替
Table1[@Dog]
Run Code Online (Sandbox Code Playgroud)
它看起来更像这样。
Table1[@(1st column)]
Run Code Online (Sandbox Code Playgroud)
在 VBA 中是这样。
ListObjects("Table1").ListColumns(1)
Run Code Online (Sandbox Code Playgroud)
但我需要知道是否有公式方法可以做到这一点?也只是为了说明我不想知道它在工作表中的列号或字母。我想通过表中的位置而不是标题名称来引用第一列。泰