Archiv verlassen und diese Seite im Standarddesign anzeigen : Umsetzung in Excel möglich?
5K3L370R
2017-02-02, 21:02:01
Hallo!
Ich habe folgendes Anliegen und versuche es zu veranschaulichen:
In Zelle A1 soll die Zahl 100 stehen
In Zelle A2 soll die zahl 0 stehen
Wenn ich zb in A2 die Zahl 2 eingebe, sollen diese 2 von 100 (in A1) abgezogen werden. sprich A1 gibt den Wert 98 aus und danach soll A2 wieder auf 0 umspringen usw usf.
Ist so etwas in Excel überhaupt umsetzbar? Ich hatte an der Uni ein paar Access und Excel Kurse, aber das ist schon viel zu lang her. Ich hab zwar schon ein wenig rumprobiert, komme aber beim besten Willen zu keiner Lösung.
Access möchte ich vermeiden, sofern möglich.
Darkman.X
2017-02-02, 23:01:46
Meiner Meinung nach lässt sich das nur mir VBA realisieren. Und einen VBA-Code kann ich nicht anbieten.
5K3L370R
2017-02-02, 23:03:50
Daran habe ich überhaupt nicht gedacht. Vielen Dank für die Information und ich werde mal mein noch vorhandenes Wissen auf die Prüfung stellen ;)
Sollte gehen, Frage ist aber wie sinnvoll die Lösung ist.
Du kannst sich selbst referenzierende Formeln verwenden: Formel in A1 ist dann =A1-A2. Das geht nur, wenn du gleichzeitig die automatische Arbeitsblattberechnung in den Optionen deaktivierst. Die wird dann per F9 manuell ausgeführt; aber immer nur ein Schritt.
dr_AllCOM3
2017-02-05, 02:37:34
Geht nur mit VBA.
https://support.office.com/de-de/article/WENN-Funktion-69aed7c9-4e8a-4755-a9bc-aa8bbff73be2
Mosher
2017-02-05, 06:37:59
Du kannst auch ein Makro aufzeichnen.*
1.) Etwas in A2 eingeben
2.) Imhalt von A1 auf A1-A2 setzen
3.) Den Wert in eine unsichtbare Zelle kopieren
4.)A2 auf 0 setzen
5.) Kopierten Inhalt wieder in A1 zurückschreiben
Edit: Schritt 1 gehört nicht zum Makro
Also ich hab's jetzt so gemacht:
A1 0 100, A2 = 0.
In A2 2 reingeschrieben.
Dann ein Makro aufgezeichnet:
Makro Start
B1 anklicken.
Inhalt von Ba auf =(A1-A2) ändern. --> In B1 steht jetzt 98
B1 kopieren
Wert von B1 in A1 einfügen
A2 wieder auf 0 setzen
B1 wieder löschen
Makro Ende
Erzeugt wird dann in VBA:
Range("B1").Select
ActiveCell.FormulaR1C1 = "=RC[-1]-R[1]C[-1]"
Range("B1").Select
Selection.Copy
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A2").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "0"
Range("B1").Select
Selection.ClearContents
Range("C6").Select
nicht besonders elegant oder hübsch, geht aber schnell und funktioniert...
Den Funktionsaufruf kannst du ja noch an onCellContentChanged(A2) oder sowas knüpfen.
Und natürlich kannst du auch gleich eine ordentliche Funktion in VBA schreiben ;D
Aber falls du nicht mehr so fit bist, helfen Makros öfter mal, um wieder reinzukommen.
Viel Spaß/Erfolg.
Edit 2:
Hier mit worksheet_change
Private Sub worksheet_change(ByVal target As Range)
If target.Row = 2 And target.Column = 1 Then
If Range("A2").Value <> 0 Then
Call bla
End If
End If
End Sub
Sub bla()
'
' Makro1 Makro'
'
Range("B1").Select
ActiveCell.FormulaR1C1 = "=RC[-1]-R[1]C[-1]"
Range("B1").Select
Selection.Copy
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A2").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "0"
Range("B1").Select
Selection.ClearContents
Range("A2").Select
End Sub
myMind
2017-02-05, 15:22:43
Etwas schlanker:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column = 1 And Target.Row = 2 Then
Target.Worksheet.Range("A1").Value = Target.Worksheet.Range("A1").Value - Target.Worksheet.Range("A2").Value
Target.Worksheet.Range("A2").Value = 0
Target.Worksheet.Range("A2").Activate
End If
End Sub
Falls das Dokument beim Öffnen mit 100 und 0 initialisiert werden soll:
Private Sub Workbook_Open()
Sheets(1).Range("A1").Value = 100
Sheets(1).Range("A2").Value = 0
End Sub
myMind
2017-02-05, 15:29:28
Etwas schöner noch mit Prüfung auf numerische Werte:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column = 1 And Target.Row = 2 Then
If IsNumeric(Target.Worksheet.Range("A2").Value) Then
Target.Worksheet.Range("A1").Value = Target.Worksheet.Range("A1").Value - Target.Worksheet.Range("A2").Value
End If
Target.Worksheet.Range("A2").Value = 0
Target.Worksheet.Range("A2").Activate
End If
End Sub
vBulletin®, Copyright ©2000-2025, Jelsoft Enterprises Ltd.