Clever-Excel-Forum

Normale Version: Tabellenblattname in Formel ändern
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Liebe Forumsmitglieder,
bin neu und bitte eventuelle Fehler zu entschuldigen.
Hier ist mein Problem: 
Meine Arbeitsmappe hat ca. 100 Tabellenblätter. Das erste Arbeitsblatt ist ein "Leerformular", in welches bestimmte Daten aus immer zwei nachfolgenden Tabellenblättern eingelesen werden sollen. Die nachfolgenden Tabellenblätter haben alle eindeutige Tabellenblattnamen, wobei es immer so ist, dass zunächst z.B. das Tabellenblatt "Müller" kommt und direkt danach eine Kopie davon mit dem Namen "Müller (2)".
In meinem ersten Tabellenblatt "Leerformular" habe ich z.B. in Feld A1 eingegeben:
=WENN(Müller!A1>0;Müller!A1;Müller (2)!,A1)
damit also zunächst im Tabellenblatt "Müller nachgesehen wird, ob ein Eintrag im Feld A1 ist. Falls ja, wird er übernommen, falls nicht, wird in Tabellenblatt "Müller (2)" nachgesehen.
Das klappt soweit auch alles, aber jetzt möchte ich die nächsten beiden Tabellenblätter bearbeiten (z.B. "Schmitt" und "Schmitt (2)"). Dazu müßte ich ja über "Suchen und Ersetzen" die Formel in Tabellenblatt "Leerformular" ändern. 
Gibt es eine Möglichkeit, dass das automatisch geschieht, also dass die  Formel in Tabellenblatt "Leerformular" automatisch dann auf die nächsten beiden Tabellenblätter geändert wird?

Bräuchte also vermutlich irgendwie eine Schleife/Zähler, damit die Tabellenblätter nacheinander abgearbeitet werden. Und natürlich was, dass sich die Formel automatisch auf die neuen Tabellenblätter ändert.

Herzlichen Dank für jede Hilfe

Sandra
Hi Sandra,

(26.04.2016, 19:35)sandraS schrieb: [ -> ]Das klappt soweit auch alles, aber jetzt möchte ich die nächsten beiden Tabellenblätter bearbeiten (z.B. "Schmitt" und "Schmitt (2)"). Dazu müßte ich ja über "Suchen und Ersetzen" die Formel in Tabellenblatt "Leerformular" ändern. 
Gibt es eine Möglichkeit, dass das automatisch geschieht, also dass die  Formel in Tabellenblatt "Leerformular" automatisch dann auf die nächsten beiden Tabellenblätter geändert wird?

Bräuchte also vermutlich irgendwie eine Schleife/Zähler, damit die Tabellenblätter nacheinander abgearbeitet werden. Und natürlich was, dass sich die Formel automatisch auf die neuen Tabellenblätter ändert.

wenn Du das automatisch haben willst, dann geht das Suchen und Ersetzen mMn nur mit einem VBA-Makro.
Dann kannst Du aber auch gleich den ganzen Vorgang per Makro abarbeiten und erledigen lassen.
Hallo Sandra,

In vba kann man so durch alle sheets kommen:

Code:
Sub Sandra()
For i = 1 to sheets.count step 1
Debug.print sheets(i).name
Next
End sub

Da bei dir jeweils gerade Zahlen der Name, die nachste ungerade Zahl name(2), kannst du mit 'step 2' immer zum nachten Namen springen.

Mfg

Ps: ist es wirklich notwendig, für jeden Namen ein eigenes sheet anzulegen?

Ps: auch mit Menu 'finden/ersetzen' kannst du die Formeln ändern
Hallo Ralf und Fennek,
erstmal herzlichen Dank, dass Ihr Euch mit meinem Problem befasst!
Vielen Dank für den vba-Code, um durch alle Blätter zu kommen.
Zu Euren Anmerkungen:
- "ist es wirklich notwendig zu jedem Namen ein eigenes  sheet anzulegen": das ist halt leider die Ausgangsbasis der Arbeitsmappe, dort gibt es immer ein Tabellenblatt "Müller" und eines "Müller (2)" (für ca. 100 verschiedene Namen); leider wurden beide Tabellenblätter "parallel" bearbeitet (also Eintragungen in vordefinierten Feldern vorgenommen); jetzt möchte ich einen Abgleich zwischen den beiden Tabellenblätter durchführen ==> dazu hatte ich mir überlegt an den Anfang der Arbeitsmappe das "Leerformular" einzufügen und ich habe dann in die entsprechenden Felder, in welchen Eintragungen sein können meine Formel eingefügt (=WENN(Müller!A1>0;Müller!A1;Müller (2)!,A1). Das klappt logischerweise auch, aber wenn ich jetzt die beiden nächsten Tabellenblätter (z.B. "Schmitt" und "Schmitt (2)") bearbeiten möchte, dann stimm ja meine Formel im "Leerformular" nicht mehr. Bislang kann ich die nur von Hand ändern auf (=WENN(Schmitt!A1>0;Schmitt!A1;Schmitt (2)!A1), aber das dauert halt ewig...
- "auch mit Menu 'finden/ersetzen' kannst du die Formeln ändern": ja, das weiß ich, ist halt bei der Menge der Tabellenblätter sehr mühsam
- "wenn Du das automatisch haben willst, dann geht das Suchen und Ersetzen mMn nur mit einem VBA-Makro. Dann kannst Du aber auch gleich den ganzen Vorgang per Makro abarbeiten und erledigen lassen." ==> bin für alle Vorschläge offen (VBA-Makro; ganzer Vorgang mit Makro)...

Viele Grüße
Sandra
Hallo Sandra,

der folgende Code durchsucht jeweile zwei aufeinanderfolgende sheets und markiert Unterschiede.

Vielleicht hilft es.


Code:
Sub Sandra()
For i = 2 To Sheets.Count Step 2
With Sheets(i)
lz = Sheets(i).Range("A1").SpecialCells(xlLastCell).Row
ls = Sheets(i).Range("A1").SpecialCells(xlLastCell).Column
For j = 1 To lz
    For k = 1 To ls
        If .Cells(j, k) <> Sheets(i + 1).Cells(j, k) Then Cells(j, k).Interior.Color = vbRed
    Next k
Next j
End With
Next i
End Sub


mfg
Hallo Fennek,
vielen Dank - das hilft mir schon mal enorm weiter!
Viele Grüße
Sandra
Hallo Sandra,

hier eine kleine Verbesserung des Code.

Kann es sein, dass ihr versehentlich sowohl die Datei, als auch ein backup 'upgedatet' habt? Dann wäre ein ähnlicher Makro auf diese beiden Dateien vermutlich besser, als beide Datein zusammenzumischen.

mfg


Code:
Sub Sandra()
For i = 2 To Sheets.Count Step 2
With Sheets(i)
lz = Sheets(i).Range("A1").SpecialCells(xlLastCell).Row
ls = Sheets(i).Range("A1").SpecialCells(xlLastCell).Column
lz1 = Sheets(i+1).Range("A1").SpecialCells(xlLastCell).Row
ls1 = Sheets(i+1).Range("A1").SpecialCells(xlLastCell).Column
lz = iif(lz>=lz1,lz,lz1)
ls = iif(ls>=ls1,ls,ls1)
For j = 1 To lz
    For k = 1 To ls
        If .Cells(j, k) <> Sheets(i + 1).Cells(j, k) Then Cells(j, k).Interior.Color = vbRed
    Next k
Next j
End With
Next i
End Sub
Hallo Fennek,
ja, genau das ist leider passiert. Es wurde gleichzeitig im backup und der aktuellen Datei gearbeitet.
Hätte noch eine Frage zu dem Code den Du geschickt hast (vielen Dank!!!): Ist der jetzt für die zusammengeführte Arbeitsmappe gedacht, in der jeweils das "Originaltabellenblatt" ist und dann noch die Kopie mit "...(2)"? Oder ist der Code für die beiden getrennten Arbeitsmappen? Mit denen könnte man natürlich auch noch arbeiten, falls das mehr Sinn macht...
Viele Grüße
Sandra
Hallo,

Auch der zweite Code bezieht sich auf deine Ausgangsfrage, also eine Datei mit jeweils zwei fast identischen sheets.

Wenn du anstelle der sheets die beiden workbooks referenzierst, sollte der Code (mit kleinen Änderungen) laufen. Es werden zwei sheets verglichen, da ist es egal, ob sie i einer Datei hintereinander stehen, oder in zwei Dateien.

Ich hoffe, das ihr in der Abteilung jemanden habt, der zumindest Grundkenntnisse in vba hat.

Mfg
Hi,

(28.04.2016, 11:09)Fennek schrieb: [ -> ]Ich hoffe, das ihr in der Abteilung jemanden habt, der zumindest Grundkenntnisse in vba hat.

ansonsten muß sie Dir die Dateien schicken, dann kannst Du es ihr einbauen.  Angel  :100:
Seiten: 1 2