Wenn ich in Zelle x eine 1 eintrage dann möchte ich das in Zelle y nichts steht (leer ist) und umgekehrt?

3 Antworten

Falls Du Dich auf ein Makro einlassen willst (warum haben die Anderen schon beschrieben), was ich eigentlich nur empfehle, wenn man sich zumindest ein bisschen damit auskennt, dann:

Mach mal einen Rechtsklick auf den Tabellenreiter (unten, da wo z.B. Tabelle1 steht) und gehe dann auf "Code anzeigen...".

In das große Fenster des VBA-Editors, der sich dann öffnet kopierst Du folgenden Code:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zelle1 As Range
Dim zelle2 As Range
Set Zelle1 = Range("A1")   'anpassen!
Set zelle2 = Range("B1")   'anpassen!
If Not Intersect(Target, Zelle1) Is Nothing _
Or Not Intersect(Target, zelle2) Is Nothing Then
   On Error GoTo ErrorHandler
   Application.EnableEvents = False
   If Target = Zelle1 Then zelle2 = ""
   If Target = zelle2 Then Zelle1 = ""
ErrorHandler: Application.EnableEvents = True
End If
End Sub

Die Datei musst Du danach aber als .xlsm speichern, und Makros zulassen.

Teste ausführlich.

Woher ich das weiß:Berufserfahrung – IT-Administrator (i.R.)

Hawk3571 
Beitragsersteller
 28.03.2018, 17:38

Danke werde ich morgen auf der Arbeit gleich mal ausprobieren.

Was aber, wenn ich mehrere Zeilen habe in denen ich das machen will?

A1 zu B1,

A2 zu B2,

A3 zu B3 usw. usw.

0
Oubyi, UserMod Light  28.03.2018, 19:35
@Hawk3571

Kommt drauf an. Wenn die beiden Zellen immer jeweils so direkt nebeneinander liegen, also in benachbarten Spalten, dann sollte es so klappen:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Bereich1 As Range
Dim Bereich2 As Range
Set Bereich1 = Range("A1:A100")  'anpassen!
Set Bereich2 = Range("B1:B100")  'anpassen!
If Not Intersect(Target, Bereich1) Is Nothing Then
  On Error GoTo ErrorHandler1
  Application.EnableEvents = False
  Target.Offset(0, 1) = ""
ErrorHandler1: Application.EnableEvents = True
ElseIf Not Intersect(Target, Bereich2) Is Nothing Then
   On Error GoTo ErrorHandler2
   Application.EnableEvents = False
   Target.Offset(0, -1) = ""
ErrorHandler2: Application.EnableEvents = True
End If
End Sub

Wenn das nicht der Fall ist muss der Offset-Teil angepasst werden. Frage dann ggf. nochmal nach und nenne die genauen Bereichs-Adressen.

Teste auf jeden Fall genau.

1

Umgekehrt heißt:

Wenn ich zum Bsp. in A1 eine 1 eintrage, dann soll B1 leer sein.

Wenn ich nun wiederum in B1 eine 1 eintrage, dann soll die 1 aus A1 verschwinden und das Feld wieder leer sein.

Das also immer nur in A1 oder in B1 die 1 stehen kann, nicht aber gleichzeitig.


Funfroc  28.03.2018, 10:32

Genau das hat gfntom beschrieben. Mit einer Formel nicht machbar.

Du müsstest ein Makro erstellen, also sprich eine Programmierung. Das ganze geht über ein Worksheet_Change Ereignis.

Edit: Wenn du einem Antwortendem auf seine Antwort schreiben willst, gibt es die "Kommentieren"-Funktion. Sonst liest es derjenige womöglich nicht.

3

Was heißt "und umgekehrt"?

Wenn du in y eine 1 einträgst soll x leer sein?
Das wirst du nur über ein Makro/VBA schaffen, nicht mit Formeln, da in einer Zelle entweder eine Formel oder ein eingetragener Wert stehen kann, aber nicht beides.

Falls die Zelle nur leer erscheinen soll, kannst du den Wert in der Zelle mit Hilfe der bedingten Formatierung unsichtbar machen, indem du die Schriftfarbe auf die Hintergrundfarbe setzt.