Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Tabellenblattname in Formel ändern
#1
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
Antworten Top
#2
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.
Antworten Top
#3
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
Antworten Top
#4
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
Antworten Top
#5
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
[-] Folgende(r) 1 Nutzer sagt Danke an Fennek für diesen Beitrag:
  • sandraS
Antworten Top
#6
Hallo Fennek,
vielen Dank - das hilft mir schon mal enorm weiter!
Viele Grüße
Sandra
Antworten Top
#7
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
Antworten Top
#8
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
Antworten Top
#9
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
Antworten Top
#10
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:
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste