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.

Excel2010: Ersetzen in Zelle eingegebenes Zeichen durch eine vorgegebene Zahl?
#1
Hallo liebe community,

ich habe folgendes Problem (Excel 2010): In einer Tabelle habe ich 4 Felder, z.B.:  C5, C6, C7, C8. Wenn ich nun ein x, in das Feld C5 mache, sollte sich das automatisch in die Zahl "1" umwandeln. Für Feld C6 sollte es die "2" werden, für C7 die "3" usw...

Ich habe schon alles möglich probiert  mit der Funktion "WECHSELN" und "ERSETZEN", aber irgendwie erschließt sich mir die Syntax da nicht. Bekomme immer "Zirkelbezugfehler" udn wenn ich die Hilfe aufrufe steieg ich ganz aus...Ich bin eben kein Programmierer oder so. Sad

Kann mir wer verraten wie die korrekte Funktion/Formel dazu ist?

Danke!

VG, Peter.
Antworten Top
#2
Hi Peter,

wenn das x wirklich in die Zelle gesetzt werden muss, in der dann dieses in eine Zahl umgewandelt werden soll, geht das nur mit VBA (da kann ich dir nicht helfen) Sonst würde ich dir folgende Lösung vorschlagen:

Tabelle6

C
4x
51
62
73
84
Formeln der Tabelle
ZelleFormel
C5=WENN($C$4="x";ZEILE()-4;"")
C6=WENN($C$4="x";ZEILE()-4;"")
C7=WENN($C$4="x";ZEILE()-4;"")
C8=WENN($C$4="x";ZEILE()-4;"")

Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Antworten Top
#3
Hallo,

ich verstehe das so, dass es in der Eingabezelle passieren soll.
Das ginge nur per VBA z. B. so:


Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, Range("C5:C8")) Is Nothing Then
   If LCase(Target.Text) = "x" Then
     Application.EnableEvents = False
     Target = Target.Row - 4
     Application.EnableEvents = True
   End If
 End If
End Sub

Rechtsklick auf den Tabellenreiter, im aufklappenden Kontextmenü Code anzeigen wählen und den Code in das sich öffnende große Fenster einfügen.
Beim Speichern der Mappe, diese als .xlsm , mit Makros speichern
Gruß Atilla
Antworten Top
#4
(10.02.2016, 10:38)WillWissen schrieb: Hi Peter,

wenn das x wirklich in die Zelle gesetzt werden muss, in der dann dieses in eine Zahl umgewandelt werden soll, geht das nur mit VBA (da kann ich dir nicht helfen) Sonst würde ich dir folgende Lösung vorschlagen:

Tabelle6

C
4x
51
62
73
84
Formeln der Tabelle
ZelleFormel
C5=WENN($C$4="x";ZEILE()-4;"")
C6=WENN($C$4="x";ZEILE()-4;"")
C7=WENN($C$4="x";ZEILE()-4;"")
C8=WENN($C$4="x";ZEILE()-4;"")

Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8

Hi,

leider klappt das mit der Formel nicht, bekomme immer einen "Zirkelbezugsfehler". :(

VG, P.
Antworten Top
#5
(10.02.2016, 10:48)atilla schrieb: Hallo,

ich verstehe das so, dass es in der Eingabezelle passieren soll.
Das ginge nur per VBA z. B. so:


Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, Range("C5:C8")) Is Nothing Then
   If LCase(Target.Text) = "x" Then
     Application.EnableEvents = False
     Target = Target.Row - 4
     Application.EnableEvents = True
   End If
 End If
End Sub

Rechtsklick auf den Tabellenreiter, im aufklappenden Kontextmenü Code anzeigen wählen und den Code in das sich öffnende große Fenster einfügen.
Beim Speichern der Mappe, diese als .xlsm , mit Makros speichern

Hi Attila,

habe den Code in das entsprechende  Tabellenblatt reingebaut. Aber wie aktiviere ich den? Habe ich jetzt eine neue Funktion "Worksheet_Change" oder wird der Code automatisch "scharfgeschalten" wenn ich das Dokument öffne?

VG, P.
Antworten Top
#6
Hallo,

der Code reagiert auf Änderungen im Bereich C5:C8 automatisch.
Gruß Atilla
Antworten Top
#7
(10.02.2016, 11:08)atilla schrieb: Hallo,

der Code reagiert auf Änderungen im Bereich C5:C8 automatisch.

Achja, sorry. Steht ja im Code. ::)

Danke!

VG, P.
Antworten Top
#8
Ok, funktioniert alles! Jetzt kann ich mir 4 Funktionen bauen, für jedes Feld eine. Danke!

VG, P.
Antworten Top
#9
Warum setzt du kein 1,2,3,4 in C5, C6, C7, C8 ?

Warum ist "x" 'bessser' als 1,2,3,4 ??
Antworten Top
#10
Hallo Attila, hallo Günter,

habe jetzt eine für mich funktionierende Lösung gebaut und beschreibe die hier kurz, evtl. gibt's ja noch mehr Nutzer die so etwas suchen :)


Aufgabenstellung: Eine Tabelle für eine Umfrage. Für jede Frage (Zeile)  soll ein Feld für den Wert 1 ("Überhaupt nicht"), 2 ("Etwas"), 3 ("Eher") 4 ("Total") angekreuzt ("x") werden.

[
Bild bitte so als Datei hochladen: Klick mich!
]


Die Kreuze sollen sich nach der Eingabe automatisch in den entsprechenden Zahlenwert "umwandeln", so dass diese Zahlenwert dann durch verschiedene Formeln weiterverarbeitet werden kann.


Umsetzung Für Excel 2010: Automatische Umwandlung eines "x" in einem Feld in einen vorgegebenen Zahlenwert, der dann in der Zelle erscheinen soll.


Lösung: VBA-Script:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, Range("D4:D6")) Is Nothing Then
   If LCase(Target.Text) = "x" Then
     Application.EnableEvents = False
     Target = Target.Row - Target.Row + 1
     Application.EnableEvents = True
   End If
 End If
 
 If Not Intersect(Target, Range("E4:E6")) Is Nothing Then
   If LCase(Target.Text) = "x" Then
     Application.EnableEvents = False
     Target = Target.Row - Target.Row + 2
     Application.EnableEvents = True
   End If
 End If
 
   
 If Not Intersect(Target, Range("F4:F6")) Is Nothing Then
   If LCase(Target.Text) = "x" Then
     Application.EnableEvents = False
     Target = Target.Row - Target.Row + 3
     Application.EnableEvents = True
   End If
 End If
 
 If Not Intersect(Target, Range("G4:G6")) Is Nothing Then
   If LCase(Target.Text) = "x" Then
     Application.EnableEvents = False
     Target = Target.Row - Target.Row + 4
     Application.EnableEvents = True
   End If
 End If

Ergebnis:


[
Bild bitte so als Datei hochladen: Klick mich!
]

Viele Grüße,
P.
Antworten Top


Gehe zu:


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