Mou*_*ear 5 excel formula tablename defined
我想知道是否有使用公式返回表名的方法?
我正在研究一种将几千个地址分解为信息透视图列的方法。即#,街道,城市,州,邮政编码和电话号码。地址的格式与“文本到列”的格式不一致。我终于想出了公式来完成工作,但是时间很长。在一篇帖子中,我发现它建议将公式的重复部分用作“定义的名称”。而且它变得非常容易。现在这是问题所在。
表名称为“ 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)
这是一个 VBA 解决方案,因为您说您想查看它。这是一个 UDF(用户定义函数),您可以使用 VBA 创建它,但将其用作单元格内的公式。将此代码保存在标准代码模块中(不在工作表模块中,也不在“ThisWorkbook”模块中):
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
Run Code Online (Sandbox Code Playgroud)
保存到模块后,您可以在单元格公式中使用它,如下所示:
=GetTableName(A1)
Run Code Online (Sandbox Code Playgroud)
或这个
=GetTableName(B:B)
Run Code Online (Sandbox Code Playgroud)
或这个
=GetTableName(B2:W900)
Run Code Online (Sandbox Code Playgroud)
如果您使用与多个表重叠的范围,它将返回第一个表的名称。
您将需要两个单元格来获取表名。我的表格标题从第 2 行开始,表格数据在第 3 行,因此我将两个公式分别放在单元格 A1 和 B1 中。
第一个单元格应引用表格左上角的标题单元格。对我来说,公式最终阅读:
=My2016Data[[#Headers],[State]]
Run Code Online (Sandbox Code Playgroud)
相当于“状态”。
第二个单元格的公式应该是:
=MID(FORMULATEXT(A1),2,FIND("[",FORMULATEXT(A1))-2)
Run Code Online (Sandbox Code Playgroud)
相当于“My2016Data”。