I was wondering if there is anyway to return the name of the table using a formula?
I was working on a way to break down a few thousand addresses into there perspective column of information. ie.. #, Street, City, State, Zip-code and Phone#. The addresses are not in any consistent format that Text to Columns would work. I finally came up with the formulas to get the job done, but the are very long. In a post I found it suggested to use repeated parts of the formulas as a Defined Name. And it made it so much easier. Now Here is the problem.
A formula that has the table name "Table1" won't work in "Table2". Or any other table name. Column headers are the same for each table.
MAX(SEARCH(Table1[@State],Table1[@Origin]))
A way to return the name of the table is needed. Via formula or formula as Defined Name.
MAX(SEARCH(GetTableName[@State],GetTableName[@Origin]))
I prefer it to be a formula. I'm not sure if a VBA solution would be a correct answer to this question so I would not be able to choose it as THE answer, even if it does work. It will still be appreciated. I will ask in a separate post if I do not find a Formula Solution.
TY
I found this post that has a VBA solution, but I can't use it. I will post just so someone can maybe figure this out. Portland Runner Posted this CODE to get table name.
Function GetTableName(shtName As String) As String
GetTableName = Worksheets(shtName).ListObjects(1).Name
End Function
In that Function I enter My Defined Name formula named "SheetName"
=MID(CELL("filename"),FIND("]",CELL("filename"))+1,100)
So I can use it like this.
=MAX(SEARCH(INDIRECT(GetTableName(SheetName)&"[@State]"),INDIRECT(GetTableName(SheetName)&"[@Origin]")))
However I still need this to be Formula Only. While I can run Macros on My PC, they will not run in the PC that has all the data.
This is the last thing I got using a UDF. Unfortunately I still cant use it. Plus It gets the first Table's name and not the actual table the cell is in. Good if that is the only table in sheet or if the first table is the table you want.
Function GetTableName() As String
GetTableName = Worksheets(ActiveSheet.Name).ListObjects(1).Name
End Function
You can find a named range by going to the Home tab, clicking Find & Select, and then Go To. Or, press Ctrl+G on your keyboard. In the Go to box, double-click the named range you want to find.
Click in your table, select Design under Table Tools on the ribbon, and then uncheck "Header Row". That should allow you to enter a formula in the cell above your table data. This method can be used when you are willing to sacrifice the "Sort" ability of Header Row after you protect the sheet.
Reference the current sheet tab name in cell with formula 1. Select a blank cell, copy and paste the formula =MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,255) into the Formula Bar, and the press the Enter key. See screenshot: Now the sheet tab name is referenced in the cell.
You will need two cells to get the table name. My Table Headers start in row 2 and Table Data in row 3, so I put my two formulas in cells A1 and B1, respectively.
The first cell should reference the top left header cell of your table. For me, the formula ends up reading:
=My2016Data[[#Headers],[State]]
and equates to "State".
The second cell's formula should be:
=MID(FORMULATEXT(A1),2,FIND("[",FORMULATEXT(A1))-2)
and equates to "My2016Data".
Here's a VBA solution since you said you want to see it. This is a UDF (user defined function) which you create with VBA but use as a formula inside a cell. Save this code in a standard code module (not in a sheet module and not in the "ThisWorkbook" module):
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
Once saved to a module, you can use it in a cell formula like this:
=GetTableName(A1)
or this
=GetTableName(B:B)
or this
=GetTableName(B2:W900)
If you use a range that overlaps more than one table it will return the name of the first table.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With