Wert einer Zelle errechnen, in der Zielzelle soll keine Formel sein
Hallo, ich habe folgendes Problem:
In der Zelle A1 steht ein Wert (100), in der Zelle B1 ein weiterer (5%). In der Zelle C1 soll das multiplizierte Ergebnis stehen => 5. Allerdings soll in der Zelle C1 keine Formel hinterlegt sein, das Feld soll leer sein für manuelle Einträge.
Es soll also eine vorhandene aber nicht sichtbare Formel sein (analog einer bedingten Formatierung, die ja auch nicht sichtbar ist). Gerne möchte ich ohne Makros, Hilfsspalten etc. auskommen.
Ist höchstwahrscheinlich die gleiche Lösung: Wenn in Zelle A2 "Storno" steht, soll dieser Wert in Zelle B2 erscheinen- auch hier soll in Zelle B2 keine sichtbare Formel hinterlegt sein.
Vielen Dank für Eure Lösungsvorschläge!
Stefan
Antwort schreiben
Antwort 1 von Hajo_Zi vom 20.02.2019, 15:44 Options
Hallo Stefan,
keine Change ohne VBA.
Gruß Hajo
Antwort 2 von AceRider vom 20.02.2019, 16:43 Options
Schade :-(( Aber eine Lösung mit VBA wäre möglich? Wie sieht die aus?
Antwort 3 von DukeNT vom 20.02.2019, 16:45 Options
Hi Stefan,
in Zelle C1 schreibst du:
=WENN(A1<>"";WENN(B1<>"";(A1*B1);"");"")
Wenn in A1 und B1 werte stehen wird C1 berechnet.
Zelle C1 ist leer wenn A1 oder B1 leer sind.
Spalte B Zellen Formatieren auf "Prozent" einstellen.
Dann noch unter Ansicht "Bearbeitungsleiste" den Haken weg.
Damit wird die Formelzeile ausgeblendet.
Zwar nicht das gelbe vom Ei aber wenn es so geht?
Gruß Niels
Antwort 4 von Hajo_Zi vom 20.02.2019, 19:26 Options
Hallo Stefan,
unter der Tabelle
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Or Target.Address = "$B$1" Then Range("C1") = Range("A1") * Range("B1")
End Sub
Gruß Hajo
Antwort 5 von AceRider vom 21.02.2019, 12:12 Options
Funktioniert, vielen Dank für die Lösungsvorschläge!
In der ersten Anfrage habe ich leider nicht geschrieben, dass auch die Folgezeilen berücksichtigt werden sollen. Wie muss dann die Formel aussehen? Mit dem Ersetzen des Wertes "$a$1" durch "A1:A1000" war ich wenig erfolgreich....
Antwort 6 von Hajo_Zi vom 21.02.2019, 12:19 Options
Hallo Stefan,
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Column = 1 Or Target.Column = 2 Then Cells(Target.Row, 3) = Cells(Target.Row, 1) * Cells(Target.Row, 2)
End Sub
Gruß Hajo
Antwort 7 von AceRider vom 21.02.2019, 12:58 Options
Klasse, bin begeistert, Hajo.
Eine Anschlussfrage: Wenn ich den Wert aus Spalte 2 wieder lösche, soll auch in Spalte 3 nichts mehr erscheinen (jetzt erscheint beim Löschen immer eine "0") => d.h. ich will den Ursprungszustand wieder haben.
Letzte Frage (hoffentlich): Wie sieht die Formel bei diesem Problem aus: Wenn in Zelle A2 "Storno" steht (+fortlaufende Zeilen), soll dieser Wert "Storno" in Zelle B2 erscheinen.
Antwort 8 von Hajo_Zi vom 21.02.2019, 13:34 Options
HAllo Stefan,
ich hoffe mal ich habe es richtig verstanden.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Column = 1 Or Target.Column = 2 Then
If Target <> "" Then
If IsNumeric(Cells(Target.Row, 1)) And IsNumeric(Cells(Target.Row, 1)) Then
Cells(Target.Row, 3) = Cells(Target.Row, 1) * Cells(Target.Row, 2)
End If
Else
Cells(Target.Row, 3) = ""
End If
End If
If Target.Column = 1 And Target = "Storno" Then Target.Offset(0, 1) = Target
End Sub
Ich habe noch paar verbesserungen eingebaut
Gruß Hajo
Antwort 9 von AceRider vom 21.02.2019, 13:51 Options
Fast perfekt mit einer kleinen Änderung: Wenn nur in Spalte A oder B etwas steht (also entweder 100 oder 5%), dann soll in Spalte C nichts stehen.
Antwort 10 von Hajo_Zi vom 21.02.2019, 13:56 Options
Hallo Stefan,
sieht ein Beitrag mit Anrede und Gruß nicht persönlicher aus?
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Column = 1 Or Target.Column = 2 Then
If Target <> "" Then
If IsNumeric(Cells(Target.Row, 1)) And IsNumeric(Cells(Target.Row, 2)) _
And Cells(Target.Row, 1) <> "" And Cells(Target.Row, 2) <> "" Then
Cells(Target.Row, 3) = Cells(Target.Row, 1) * Cells(Target.Row, 2)
End If
Else
Cells(Target.Row, 3) = ""
End If
End If
If Target.Column = 1 And Target = "Storno" Then Target.Offset(0, 1) = Target
End Sub
Gruß Hajo
Antwort 11 von AceRider vom 21.02.2019, 14:19 Options
Hallo Hajo,
natürlich, Du hast Recht. Du wirst lachen, aber genau das habe ich bei meiner vorherigen Nachricht auch gedacht- nachdem ich sie abgeschickt habe :-)) Vor allem, da Du mir wirklich sehr weitergeholfen hast und ich jetzt Dank Deiner Hilfe wunschlos glücklich bin!
Vielen, vielen Dank für Deine kompetente Hilfe!
Viele Grüße
Stefan
Antwort 12 von AceRider vom 26.02.2019, 20:05 Options
Guten Abend Hajo & alle anderen lieben Helfer/Innen,
gerade ist mir aufgefallen, dass ich bei der vorherigen Anfrage einen Fehler eingebaut habe:
Wenn in Spalte B eine % Zahl steht, soll normal gerechnet werden (also z.B. 100 x 5%), nehme ich aber aus der Spalte B die % Zahl heraus, soll in C nichts stehen. Trage ich aber in die Spalte C eine manuelle Zahl ein, soll in Spalte B die % Zahl herausgenommen werden.
Ergänzt wird mein jetziges Problem durch drei neue Spalten. Steht in Spalte D das Wort Storno soll in Spalte A ebenfalls Storno übernommen werden (vorher sagte ich, dass das Wort Storno aus Spalte A in Spalte B übernommen werden solle). Dies habe ich selber hinbekommen:
If Target.Column = 4 And Target = "Storno" Then Target.Offset(0, -3) = Target
Wenn Spalte E leer ist, kann obige Formel verwendet werden. Wenn aber in Spalte D "Storno" steht und in Spalte E "Erl.", dann soll in Spalte A "Storno" stehen und es soll zusätzlich in Spalte E der Wert aus Zelle F stehen mit dem Zusatz "Storno verechnen". Beispiel: "Storno verechnen 500". Spalte G ist eine Spalte mit Gebühren, die verrechnet werden müssen.
Letztes Problem: Spalte A bezieht sich auf Spalte G (hier steht ein nicht währungsbereinigte Wert). Wenn ich in Spalte F den Wert ändere, ändert sich richtigerweise auch Spalte A. Aber es verändert sich nicht der Wert in Spalte B und C (C ist relevant)!
Gibt es auch dafür eine Lösung?? Der besseren Übersicht wollte ich die Excel Datei beigefügen, wußte aber nicht wie das geht....
Viele Grüße und vielen Dank!
Stefan
Antwort 13 von Hajo_Zi vom 27.02.2019, 13:10 Options
Hallo Stefan,
hochladen kannst Du z.B. hier
http://www.uploadagent.de/index.php
Ich habe erstmal bis Mittwoch abend keine Zeit für Dein Problem.
Gruß Hajo
Antwort 14 von AceRider vom 27.02.2019, 20:14 Options
Ich habe sie hochgeladen, weiß aber nicht, wo sie gelandet ist... :-)))
Antwort 15 von Hajo_Zi vom 27.02.2019, 20:53 Options
Hallo Stefan,
nach dem hochladen wird Dir im oberen Teil ein Link angezeigt und den mußt Du in das Forum kopieren.
Gruß Hajo
Antwort 16 von AceRider vom 28.02.2019, 16:23 Options
Hallo Hajo,
die Tabelle befindet sich hier:
http://www.uploadagent.de/files/1172676165/Tabelle.xls
Gruß
Stefan
Antwort 17 von Hajo_Zi vom 28.02.2019, 18:10 Options
Hallo Stefan,
auf meinem Rechner ist jetzt leider der Testzeitraum für mein Office abgelaufen. Meine gekaufte Version installiere ich erst beim neuen Betriebssystem. Was am Wochende passieren wird. Also bin ich zur Zeit nur eingeschränkt Handlungsfähig. Ich kann Dein Problem wahrscheinlich mir erst am Sonntag ansehen. Ich hoffe mal das bis dahin schon jemand das Problem gelöst hat.
Gruß Hajo
Antwort 18 von AceRider vom 12.03.2019, 11:36 Options
Hallo Excelprofis,
ich hoffe mir kann jemand weiterhelfen, wollte den Thread wieder ein bißchen nach vorne bringen :-)
Viele Grüße
Stefan
Antwort 19 von Hajo_Zi vom 12.03.2019, 11:55 Options
Hallo Stefan,
ich hoffe mal ich habe viele Probleme erledigt.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
Application.EnableEvents = False
If Target.Column = 1 Or Target.Column = 2 Then
Application.EnableEvents = False
If Target <> "" Then
If IsNumeric(Cells(Target.Row, 1)) And IsNumeric(Cells(Target.Row, 2)) _
And Cells(Target.Row, 1) <> "" And Cells(Target.Row, 2) <> "" Then
Cells(Target.Row, 3) = Cells(Target.Row, 1) * Cells(Target.Row, 2)
End If
Else
Cells(Target.Row, 3) = ""
End If
Else
If Target.Column = 3 Then
Cells(Target.Row, 2) = ""
End If
End If
If Target.Column = 4 And Target = "Storno" Then
Target.Offset(0, -3) = Target
If Target.Offset(0, 1) = "Erl." Then
Target.Offset(0, 1) = "Storno verrechnen " & Target.Offset(0, 2)
End If
End If
Application.EnableEvents = True
End Sub
Das letzte Problem konnte ich nicht mehr testen, da zu wenig Werte in der Datei waren und bei mir in Spalte A nur noch Storno Stand und keine Verknüpfung.
Gruß Hajo
Antwort 20 von Hajo_Zi vom 12.03.2019, 12:28 Options
Hallo Stefan,
ich habe die Datei nochmal runtergeladen. Bei Änderung in Spalte F ändert sich nicht Spalte A, da diese sich auf G bezieht und G sich nicht auf F bezieht.
Was ist wenn in A schon Storno steht? oder der Wert in Spalte A überschrieben wurde, was im Code ja auch abgefangen wurde.
Gruß Hajo