Excel: Nur eine von drei Zellen darf beschrieben werden - Wie?

4 Antworten

Wirklich nicht einfach umschrieben von dir :-) Aber die gute alte Wenn, Dann, Sonst Funktion gepaart mit der ERSETZEN Funktion kann so einiges bewerkstelligen in Excel.


blubb94 
Fragesteller
 24.09.2014, 13:26

Das Problem ist, dass die Zelle manuell gefüllt wird. Das würde bedeuten, dass ich eine Funktion dann ja mit einer "1" überschreiben würde.

1
Ifm001  24.09.2014, 13:31

Damit kannst Du nur Vorrangsregeln schaffen, aber nicht die Eingabe selbst korrigieren.

0

Das kannst du mit VBA lösen. Wenn in Zeile 1 "Hoch" dargestellt wird, in Zeile 2 "Mittel" und in Zeile 3 "Niedrig":

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Row >= 1 And Target.Row <= 3 Then
    If Cells(1, Target.Column).Value + Cells(2, Target.Column).Value + Cells(3, Target.Column).Value > 1 Then
      Target.Value = ""
    End If
  End If
End Sub

Iamiam  26.09.2014, 11:15

das löscht vermutlich den Neueintrag, nicht den alten?!
(Verhindert also grade das "Umentscheiden"?)

0

ist eine ungewöhnliche Anordnung, die Optionen untereinander anzuordnen, normalerweise macht man das pro Frage eine Zeile und darin drei Optionsspalten (B2, C2, D2)
Da ich eher an einen Beschreibungsfehler glaube, mein Makro für diese Anordnung (ich schätze nämlich, dass das der anderen AW nicht korrekt arbeitet):

Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B1:D99")) Is Nothing Then
Dim neueAdresse As String, Neueintrag As String
If Application.CountA(Range(Cells(Target.Row, 2), Cells(Target.Row, 4))) > 1 Then
neueAdresse = Target.Address: Neueintrag = Target.Value
Range(Cells(Target.Row, 2), Cells(Target.Row, 4)).Clear
Range(neueAdresse).Value = Neueintrag
End If
End If
End Sub

Egal, WAS man einträgt (Zahl 1, Zahl 15 oder x oder TEXT, der Ersteintrag wird gelöscht und jeder Neueintrag an der gewählten Stelle eingefügt.
Wenn Du das doch für die Anordnung brauchst, wie beschrieben, melde Dich nochmal, ich schreibs dann um, wenn Du es nicht selbst schaffst.
Das Makro gehört ins Modul des Worksheets, das sich öffnet, wenn Du ins Kontext-Menü des Blattnamens klickst und Code anzeigen wählst.
Füge es unterhalb evtl schon vorhandener Einträge ein (zB Option Explicit, ...), allerdings dürfen keine zwei Makros Sub Worksheet_Change(ByVal Target As Range) drin stehen.


Iamiam  26.09.2014, 11:13

Das Makro löscht auch Formate (zB spezielle Schrift). Willst du die erhalten, dann
anstatt .Clear
.ClearContents

Wenn die Antwortzellen doch untereinander stehen, folgende Veränderungen:
Range("A2:CV4")
. . .
... .Range(Cells(2, Target.column), Cells(4, Target.column)) ... letzteres in 2 Zeilen:, 1x innerhalb Count( ... )
und 1x vor .ClearContents

Viel Erfolg!

0

In der Grundfunktionalität (also via Formel) kannst Du mit der bedingten Formatierung Werte ausblenden oder schlicht alle drei Eingabefelder z. B. rot markieren, wenn die Summe mehr als 1 ergibt. Wenn Du die genannte Funktionalität 1:1 haben möchtest, wirst Du um VBA wohl nicht umher kommen.


Ifm001  25.09.2014, 09:26

Mir ist noch was eingefallen. Excel hat einen Dialog Gültigkeitsprüfung (unter Excel 2003 im Menü "Daten --> Gültigkeit..."). Dort kannst Du eine Prüfung anlegen, die verhindert, dass mehrere Werte eingebbar sind. (Als einfache, aber lückenhafte Varianten kann man z. B. prüfen, ob die Summe der drei Felder mehr als 1 ergibt)

Annahme: Die Werte können in B2:B4 eingegeben werden ...

  1. Markiere B2:B4
  2. rufe o. g. Dialog auf
  3. Im Reiter "Einstellungen" wähle unter "Zulassen" den Wert "Benutzerdefiniert" aus
  4. Gebe unter "Formel den Wert "=SUMME($B$2:$B$4) <= 1" ein.
  5. Um das ganze für den Anwender verständlicher zu machen, kannst Du im Reiter "Fehlermeldung" eine aussagekräftige Meldung definieren.
0
Iamiam  25.09.2014, 15:00
@Ifm001
  1. nicht lückenhafte Variante:
    =Anzahl2(B$2:B$4)<2
    Verhindert zweiteintrag, solange Ersteintrag nicht gelöscht.
1