Frage von Kaltearis, 35

Wie realisiere ich bei Excel doppelte Zellbezüge?

Hallo,

ich möchte gerne in verschiedenen Reitern des selben Excel Dokuments bezüge zwischen gleichen Datensätzen herstellen. Wenn etwas in einem der Reiter geändert werden soll, so soll diese Änderung automatisch in allen anderen Reitern übernommen werden. Wie das einseitig funktioniert, weiß ich. Aber ich habe leider keine Idee, wie ich das beidseitig machen kann. Also dass Änderungen in Reiter 1 in Reiter 2 übernommen werden, Andersherum aber auch Änderungen in Reiter 2 dann in Reiter 1.

vielen Dank !

Expertenantwort
von Ninombre, Community-Experte für Excel, 23

Das geht nur mit einem Makro. Mit Formeln kannst Du nicht gegenseitig zwei Zellen abfragen.

Ob eine Makrolösung besonders sinnvoll ist, hängt davon ab, was Du genau vor hast. Eine Alternative wäre, wenn Du die relevanten Überschriften/Bezeichnungen/Wertbereich oder was eben zwischen den Tabellenblättern jeweils gleich sein soll, in einem zentralen Tabellenblatt administrierst und mit Formeln darauf zugreifst.

Für die Makrolösung: Sollen sämtliche Werte synchronisiert werden oder nur bestimmte Zellen/Spalten/Zeilen? Sind die Ziele auf den anderen Tabellenblättern an der selben Stelle oder muss man das auch noch ermitteln?

Kommentar von Kaltearis ,

hallo! danke für deine Antwort!

ich habe Studenteninformationen (Name, Vorname, Matr. Nummer) die ich übertragen will. Diese Daten sind auf allen Reitern gleich und stehen auch an den selben stellen.

Die Blätter unterscheiden sich nur jeweils durch das Vorhandensein jeweils unterschiedlicher, zusätzlicher Spalten.

Kommentar von Ninombre ,

Geht es nur darum, neue Einträge zu machen? Dann würde ich ein Makro verwenden, um auf allen relevanten Tabellenblättern den neuen Eintrag zu setzen.

Bei Änderungen von bestehenden Einträgen muss ja sichergestellt sein, dass der Rest (also die Spalten, die nicht synchronisiert werden) auch noch passen.

Kommentar von Kaltearis ,

Sowohl als auch. Bestehende Datensätze werden bearbeitet und mitunter auch neue angefügt.

Zur Not reicht es mir auch, wenn alle Daten, die ich auf Seite 1 ändere, auch auf Seite 2,3... geändert werden.

Kommentar von Ninombre ,

Zwei Möglichkeiten:

Wenn Du nur gelegentlich etwas änderst und dann ausdrücklich diese Änderungen auf die anderen Tabellenblätter übertragen willst, kannst Du das Makro bspw. mit einem Button starten:

Sub kopieren()
ActiveSheet.Range("A1:C10").Copy
For i = 1 To Sheets.Count
Sheets(i).Range("A1").PasteSpecial Paste:=xlPasteValues
Next
End Sub

A1:C10 wäre der Bereich, der jeweils kopiert/eingefügt wird. Du hattest ja geschrieben, dass er in den anderen Tabellenblättern an die gleiche Stelle eingefügt wird.

Vorteil: Makro ist schnell eingefügt, geringe Gefahr ungewollter Änderungen

Nachteil: Du musst es manuell starten

Man kann auch die Änderungen in den Tabellen laufend überwachen und bei einer Änderung in einem bestimmten Bereich, diese sofort auf die anderen Tabellenblätter übertragen

Vorteil: geht eben ganz automatisch
Nachteil: ein Tippfehler, eine ungewollte Änderung ist sofort überall eingetragen und dafür gibt es kein UNDO Button. Mit einem Makro kommt man nicht aus, die Überwachung auf Änderungen (worksheet_change) muss auf jedes Tabellenblatt. Dazu muss man noch etwas hineinfummeln, dass Du das Einfügen einer Änderung nicht wiederum das Makro gestartet wird. Weiß nicht, wie ich das recht erklären soll: Wenn man in Tabelle1 etwas ändert und das automatisch in Tabelle2 geändert wird, dann stößt diese Änderung wieder das Makro an. Das läuft also ewig im Kreis, wenn man nichts einbaut.

Mir fällt dazu nur die Nutzung einer globalen Variable ein mit dem man das Reagieren auf Änderungen an und ausschaltet.

Kennst Du Dich ungefähr aus, wie man Makros hinterlegt? Das funktioniert nur, wenn es an der richtigen Stelle steht

Unter einem eigenen Modul also

public aendern as boolean

zu jedem Tabellenblatt (ich habe hier unterstellt, dass nur der Bereich A1:C10 abgeglichen wird. Das kannst Du nach Wunsch anpassen.

Kurz zur Funktion: Änderungen lösen das Makro aus. Wenn die geänderte Zelle nicht im angegebenen Bereich liegt, dann wird nichts weiter gemacht. Gleiches wenn aendern auf falsch steht. Ansonsten in jedem Tabellenblatt die gleiche Zelle mit dem eingegebenen Wert bestückt. Während dies geschieht ist die Variable auf falsch gesetzt, damit brechen die Makros auf den anderen Tabellenblättern, die eigentlich auch loslegen würden, da ja eine Änderung durch das Makro entstand, ihre Aktivitäten wieder ab.

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A1:C10")) Is Nothing Or aendern = False Then Exit Sub
aendern = False
For i = 1 To Sheets.Count
Sheets(i).Range(Target.Address).Value = Target.Value
Next
aendern = True
End Sub

Die Variable aendern muss irgendwie noch initial auf true gesetzt werden, bspw. beim Öffnen der Datei

Private Sub Workbook_Open()
aendern = True
End Sub
Expertenantwort
von DeeDee07, Community-Experte für Excel, 19

Falls in beiden Blättern die Datensätze in den gleichen Zeilen sind, kannst du auch beide Blätter markieren (mit gedrückter Strg-Taste) und dann ändern. Nicht vergessen, wieder zu demarkieren.

Ansonsten geht es wohl wie bereits vorgeschlagen nur mit einem Makro.

Expertenantwort
von Suboptimierer, Community-Experte für Excel, 27

Das geht auch nicht ohne VBA.

Mit VBA könntest du dir ein Modul anlegen und eine Funktion erstellen, die im WorksheetChange-Ereignis jedes Tabellenblatts aufgerufen wird und die Daten der aktiven Zelle des aktiven Tabellenblatts auf die anderen Tabellenblätter überträgt.

Das setzt allerdings geringe Programmierkenntnisse voraus.

Antwort
von MatthiasHerz, 20

Zirkelbezüge funktionieren in Excel nicht, da diese eine Fehlermeldung verursachen.

Dazu brauchst VBA.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten