Mai 28

Excel gibt den Tabellennamen mit Formular zurück?

Ich habe mich gefragt, ob es überhaupt möglich ist, den Namen der Tabelle mit einer Formel zurückzugeben? Ich arbeitete an einer Möglichkeit, ein paar tausend Adressen in eine perspektivische Informationsspalte zu zerlegen. z.B. #, Straße, Stadt, Staat, Postleitzahl und Telefon#. Die Adressen sind nicht in einem einheitlichen Format, das Text zu Spalten funktionieren würde. So können Sie excel tabellenname in zelle implementieren Ich habe mir endlich die Formeln ausgedacht, um die Arbeit zu erledigen, aber sie sind sehr lang. In einem Beitrag fand ich es vorgeschlagen, wiederholte Teile der Formeln als definierten Namen zu verwenden. Und es machte es so viel einfacher. Jetzt ist hier das Problem. Eine Formel mit dem Tabellennamen „Tabelle1“ funktioniert in „Tabelle2“ nicht. Oder einen anderen Tabellennamen. Die Spaltenüberschriften sind für jede Tabelle gleich. MAX(SEARCH(Table1[@State],Table1[@Origin]))).

Es wird eine Möglichkeit benötigt, den Namen der Tabelle zurückzugeben. Über Formel oder Formel als Definierter Name.

  • MAX(SEARCH(GetTableName[@State],GetTableName[@Origin]))))
  • Ich bevorzuge es, wenn es eine Formel ist.
  • Ich bin mir nicht sicher, ob eine VBA-Lösung eine richtige Antwort auf diese Frage wäre, also könnte ich sie nicht als DIE Antwort wählen, selbst wenn sie funktioniert.
  • Es wird immer noch geschätzt werden. Ich werde in einem separaten Beitrag fragen, ob ich keine Formellösung finde.

Ich habe diesen Beitrag gefunden, der eine VBA-Lösung hat, aber ich kann ihn nicht verwenden. Ich werde posten, nur damit jemand das vielleicht herausfinden kann. Portland Runner hat diesen CODE veröffentlicht, um den Tabellennamen zu erhalten.

Funktion GetTableName(shtName As String) As String
GetTableName = Arbeitsblätter(shtName).ListObjects(1).Name
Ende Funktion

In dieser Funktion gebe ich die Formel Mein definierter Name mit dem Namen „SheetName“ ein.

=MID(CELL(„Dateiname“),FIND(„]“,CELL(„Dateiname“))+1,100) Damit ich es so benutzen kann. =MAX(SEARCH(INDIRECT(GetTableName(SheetName)&“[@State]“),INDIRECT(GetTableName(SheetName)&“[@Origin. Allerdings brauche ich immer noch, dass dies nur die Formel ist. Obwohl ich Makros auf meinem PC ausführen kann, werden sie nicht auf dem PC ausgeführt, der alle Daten hat. Das ist das Letzte, was ich mit einem UDF bekommen habe. Leider kann ich es immer noch nicht benutzen. Außerdem erhält es den Namen der ersten Tabelle und nicht die aktuelle Tabelle, in der sich die Zelle befindet. Gut, wenn das die einzige Tabelle im Blatt ist oder wenn die erste Tabelle die gewünschte Tabelle ist.

Funktion GetTableName() als Zeichenkette
GetTableName = Arbeitsblätter(ActiveSheet.Name).ListObjects(1).Name
Ende Funktion

Dennoch wäre VBA eine einfache Lösung. Sie können eine UDF mit Eingaben wie =MyFunction(TableName,Field,someOtherValuesYouWant,……) erstellen. Auf diese Weise erhalten Sie einfache „Kopieren/Einfügen“-Formeln, mit denen Sie anstelle von endlosen Formeln arbeiten können ;) Ja, ich bin sicher, dass VBA eine bessere und einfachere Option ist, aber der Computer, auf dem sich die Informationen befinden, gehört nicht mir und Makros sind aufgrund der Unternehmensrichtlinien deaktiviert. Das Extrahieren der Daten und das Ausführen auf meinem eigenen PC ist aus Datenschutzgründen nicht möglich. Wenn Sie jedoch eine VBA-Lösung haben, würde ich sie gerne sehen. Aber in diesem Fall ist eine Formel erforderlich. Auch Sie erkennen eine Funktion, bei der ich den Namen der Tabelle hinzufüge, ist genau die gleiche Situation, die ich jetzt habe. Der Tabellenname ist nicht bekannt. Die Funktion müsste so funktionieren, dass ADDRESS(ROW(),COLUMN(),4,1) die Adresse der Zelle zurückgibt. Ich muss den Tabellennamen zurückgeben, wo sich die Zelle befindet. Kannst du im Detail sagen, was du tun willst? Woher weiß man, mit welcher Tabelle man arbeitet?

Hier ist eine VBA-Lösung, da Sie gesagt haben, dass Sie sie sehen wollen. Dies ist eine UDF (user defined function), die Sie mit VBA erstellen, aber als Formel innerhalb einer Zelle verwenden. Speichern Sie den Code in einem Standard-Codemodul, nicht in einem Blechmodul oder dem Modul „ThisWorkbook“.

Funktion GetTableName(cellInTable Als Bereich) Als Zeichenkette
Dim tblName als Zeichenkette
tblName = vbNullString
Bei Fehler Fortsetzung Weiter
tblName = cellInTable.ListObject.Name
GetTableName = tblName
Ende Funktion