Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Vergleich von Zelleninhalt mit Tabellenblattname

Forumthread: Vergleich von Zelleninhalt mit Tabellenblattname

Vergleich von Zelleninhalt mit Tabellenblattname
08.10.2015 09:08:56
Zelleninhalt
Hallo zusammen,
folgendes Problem liegt an, bei dem ich gerade etwas auf dem schlauch stehe.
In meiner Arbeitsmappe haben wir mal, grob geschätzt 40 Tabellenblätter, wovon 35 relevant für die nachfolgende Berechnung sind.
Die Namen der Tabellenblätter sind meist nach dem folgenden Schema aufgebaut:
Vierstellige Nummer Leereichen Name der Kostenstelle z.B. "1000 Geschäftsführung"
es gibt aber auch 3 Blätter, welche den nach der Nummer noch eine Ergänzung haben:
"1000-1 PKW GL" und das Tabellenblatt "ohne KST" ist auch noch relevant. (Immer ohne die "").
Nun wird in Zelle A516 eine 4- Stellige Nummer oder eine mit entsprechender Ergänzng (-1) oder das "ohne" eingetragen. Z.B wird in der Zelle A516 des Blattes "1000 Geschäftsleitung" die Nummer 1000-1 eingetragen, so sollen in den Zellen H516 - CJ516 (H516:CJ516) wie Werte aus dem Tabellenblatt "1000-1 PKW GL" aus den Zellen H512 - CJ512 (H512:CJ512) eingetragen werden.
Es soll also der Zelleninhalt aus A516 mit den Namen der Tabellenblättern verglichen werden und dann entsprechende Werte, in bestimmten Zellen wiedergegeben werden.
Ich hoffe ich konnte das ganze verständlich beschreiben und hoffe Ihr wisst eine Lösung für mein Problem.

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Vergleich von Zelleninhalt mit Tabellenblattname
10.10.2015 09:55:26
Zelleninhalt
Hallo Andreas,
in das Modul der Tabelle "1000 Geschäftsleitung".
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim objWS As Worksheet, strFormula As String

If Target.Address(0, 0) = "A516" Then
  If Len(Target) Then
    For Each objWS In ThisWorkbook.Worksheets
      If Not objWS Is Me Then
        If objWS.Name Like Target.Text & "*" Then
          strFormula = "='" & objWS.Name & "'!H512"
          Exit For
        End If
      End If
    Next
  End If
  Range("H516:CJ516").Formula = strFormula
End If

End Sub

Gruß Sepp

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Vergleich von Zelleninhalt mit Tabellenblattname


Schritt-für-Schritt-Anleitung

  1. Öffne deine Excel-Arbeitsmappe und gehe zu dem Arbeitsblatt, in dem du den Vergleich durchführen möchtest.

  2. Wechsle in den VBA-Editor: Drücke ALT + F11.

  3. Füge ein neues Modul hinzu: Klicke im Menü auf "Einfügen" und wähle "Modul".

  4. Kopiere den folgenden VBA-Code in das Modul:

    Private Sub Worksheet_Change(ByVal Target As Range)
       Dim objWS As Worksheet, strFormula As String
       If Target.Address(0, 0) = "A516" Then
           If Len(Target) Then
               For Each objWS In ThisWorkbook.Worksheets
                   If Not objWS Is Me Then
                       If objWS.Name Like Target.Text & "*" Then
                           strFormula = "='" & objWS.Name & "'!H512"
                           Exit For
                       End If
                   End If
               Next
               Range("H516:CJ516").Formula = strFormula
           End If
       End If
    End Sub
  5. Schließe den VBA-Editor und kehre zu Excel zurück.

  6. Gib in Zelle A516 eine vierstellige Nummer oder einen Namen mit der entsprechenden Ergänzung ein (z.B. "1000-1").

  7. Überprüfe die Zellen H516 bis CJ516, um sicherzustellen, dass die Werte aus dem entsprechenden Tabellenblatt übernommen wurden.


Häufige Fehler und Lösungen

  • Fehler: Zellen bleiben leer
    Lösung: Stelle sicher, dass der Tabellenblattname korrekt in Zelle A516 eingegeben wurde. Überprüfe auch, ob das entsprechende Tabellenblatt existiert.

  • Fehler: Fehlermeldungen beim Ausführen des Codes
    Lösung: Prüfe, ob der Code im richtigen Modul eingefügt wurde und dass der VBA-Editor keine Syntaxfehler anzeigt.


Alternative Methoden

  • Formelbasierte Lösung: Anstelle von VBA kannst du auch mit der INDIREKT-Funktion arbeiten. Die Formel in Zelle H516 könnte so aussehen:

    =INDIREKT("'" & A516 & "'!H512")
  • Verwendung von SVERWEIS: Falls die Daten in einem anderen Format vorliegen, könnte SVERWEIS eine nützliche Alternative sein.


Praktische Beispiele

  • Wenn du in Zelle A516 "1000" eingibst, wird der Wert aus Zelle H512 des Blattes "1000 Geschäftsführung" in H516 angezeigt.
  • Bei "1000-1" wird der Wert aus H512 des Blattes "1000-1 PKW GL" in H516 übernommen.

Tipps für Profis

  • Verwende Fehlerbehandlung: Füge On Error Resume Next und On Error GoTo 0 ein, um mögliche Laufzeitfehler im VBA-Code zu handhaben.
  • Optimiere den Code: Reduziere die Anzahl der Berechnungen, indem du zuerst die Berechnungen deaktivierst (Application.Calculation = xlCalculationManual) und nach der Änderung wieder aktivierst.

FAQ: Häufige Fragen

1. Was mache ich, wenn sich der Tabellenblattname ändert?
Du musst sicherstellen, dass der Name in Zelle A516 immer aktuell ist, da der VBA-Code darauf basiert.

2. Kann ich diesen Code für mehrere Zellen verwenden?
Ja, passe einfach die If Target.Address(0, 0) = "A516"-Bedingung an, um weitere Zellen einzuschließen.

3. Funktioniert das auch in Excel Online?
Leider funktioniert VBA nur in Desktop-Versionen von Excel. In Excel Online müsstest du eine alternative Methode finden, wie z.B. Formeln.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige