Supportnet / Forum / Tabellenkalkulation
Vba (Formel)
Frage
Hallo zusamen,
ich brauche ein makro ,das mir einen spaltenbereich umrechnet, und das ergebnis in dem selben zelle ausgibt .die Formel lautet:
Zelleninhalt+173/100
und das gleiche wieder für einen Zeilenbereich,allerdings, dieses mal lautet die formel so:
zellen inhalt / 100
+ heisst addiere
/ heisst devidiere
kann man das so schreiben ,dass je nach selektierten bereich(spalten,zeilen) die entsprechende umrechnug gefürt wird..wenn nicht koennen auch zwei unabhängige makros sein
wäre für die hilfe sehr dankbar.
MfG
Antwort 1 von Saarbauer
Hallo,
leider reichen die Angaben nicht aus,wäre mit einer Hilfsspalte machbar oder mit VBA
Bei der Formel
ist noch die Frage ob nur die 173/100 geteilt wird, was sich aus der mathematischen Heraschie so ergibt oder ob (Zelleninhalt+173) /100 gemeint ist.
Gruß
Helmut
leider reichen die Angaben nicht aus,wäre mit einer Hilfsspalte machbar oder mit VBA
Bei der Formel
Zitat:
Zelleninhalt+173/100
Zelleninhalt+173/100
ist noch die Frage ob nur die 173/100 geteilt wird, was sich aus der mathematischen Heraschie so ergibt oder ob (Zelleninhalt+173) /100 gemeint ist.
Gruß
Helmut
Antwort 2 von javansi
hallo helmut,
mit einer Hilfsspalte meinst du, die Ergebnisse sollen in einer spalte ausgegeben werden?
nein das ergebniss muss in dem selben Zelle ausgegeben werden ,wo der Zelleninhalt war .
das ist ja auch gemeint:(Zelleninhalt+173) /100
danke
mit einer Hilfsspalte meinst du, die Ergebnisse sollen in einer spalte ausgegeben werden?
nein das ergebniss muss in dem selben Zelle ausgegeben werden ,wo der Zelleninhalt war .
das ist ja auch gemeint:(Zelleninhalt+173) /100
danke
Antwort 3 von CaroS
Hallo javansi,
Du musst die Spalte oder einen Zellbereich markieren und dann dieses Makro ausführen:
Sub Berechnen8()
Dim r As Range, z As Range
Application.ScreenUpdating = False
Set r = Application.Selection
For Each z In r
z.Value = (z.Value + 173) / 100
Next
Application.ScreenUpdating = True
End Sub
Es gibt allerdings auch eine Möglichkeit ohne Formeln und ohne Makro, einfach nur über die Befehle Kopieren und Inhalte einfügen... Die müssten nach dem Markieren für jede Rechenoperation (+ 173; / 100)einmal ausgeführt werden.
Gruß,
CaroS
Du musst die Spalte oder einen Zellbereich markieren und dann dieses Makro ausführen:
Sub Berechnen8()
Dim r As Range, z As Range
Application.ScreenUpdating = False
Set r = Application.Selection
For Each z In r
z.Value = (z.Value + 173) / 100
Next
Application.ScreenUpdating = True
End Sub
Es gibt allerdings auch eine Möglichkeit ohne Formeln und ohne Makro, einfach nur über die Befehle Kopieren und Inhalte einfügen... Die müssten nach dem Markieren für jede Rechenoperation (+ 173; / 100)einmal ausgeführt werden.
Gruß,
CaroS
Antwort 4 von javansi
hallo CaroS,
leider hat das programm nicht das gerechnet,was zu berechnen ist.... es kammen andere ergebnisse raus
der inhalt des bereich hatte -145 , -135 und -125
nach der formel sollte 0,28, 0,38 und 0,48 rauskommen.
die vom deinem Makro eingetragene ergebnisse warren 1,1,0...das ist aber falsch natürlich.
bis dann
MFG
leider hat das programm nicht das gerechnet,was zu berechnen ist.... es kammen andere ergebnisse raus
der inhalt des bereich hatte -145 , -135 und -125
nach der formel sollte 0,28, 0,38 und 0,48 rauskommen.
die vom deinem Makro eingetragene ergebnisse warren 1,1,0...das ist aber falsch natürlich.
bis dann
MFG
Antwort 5 von CaroS
Hallo javansi,
eins kann ich auf jeden Fall bestätigen: für die 3 Werte -145, -135 und -125 müsste 0,28, 0,38 und 0,48 rauskommen.
Und genau das kommt bei mir auch raus. Egal wo und wie (unter- oder nebeneinander) die Werte in der Tabelle stehen, Hauptsache so, dass man sie zusammenhängend markieren kann und dass dabei keine Zellen in der Markierung sind, die etwas anderes als Zahlen enthalten. Dann rufe ich das Makro auf, z. B. über Menü Extras -- Makro -- Makros... -- Ausführen und ich bekomme das richtige Ergebnis.
Ich kann es Dir nicht erklären, warum es bei Dir nicht so ist, es gibt auch keinen ver-nünftigen Grund dafür, aber wenn der Fehler weiter besteht, könnte man (zeitweilig) noch ein paar zusätzliche Kontrollen einbauen, um der Ursache des Fehlers auf die Spur zu kommen. Das wäre für´s erste mein Vorschlag:
Sub Berechnen9()
Dim r As Range, z As Range
Rem Application.ScreenUpdating = False
Set r = Application.Selection
For Each z In r
If VarType(z.Value) = 5 Then
MsgBox "hat vor der Berechnung den Wert " & CStr(z.Value) & Chr(13) & _
"nach der Addition + 173 den Wert " & CStr(z.Value + 173) & " (Zwischenergebnis)" & Chr(13) & _
"und am Ende der Berechnung den Wert " & CStr((z.Value + 173) / 100) & ".", , "Zelle " & z.Address
z.Value = (z.Value + 173) / 100
Else
MsgBox "enthält keine Zahl. Deshalb wird nichts berechnet.", , "Zelle " & z.Address
End If
Next
Rem Application.ScreenUpdating = True
End Sub
Überprüfe auch mal die Formatierung der Zellen, sie sollten als Zahl mit mindestens 2
<- 0,0
Nachkommastellen formatiert sein. (Evtl. 0,00 benutzen.)
Gruß,
CaroS
eins kann ich auf jeden Fall bestätigen: für die 3 Werte -145, -135 und -125 müsste 0,28, 0,38 und 0,48 rauskommen.
Und genau das kommt bei mir auch raus. Egal wo und wie (unter- oder nebeneinander) die Werte in der Tabelle stehen, Hauptsache so, dass man sie zusammenhängend markieren kann und dass dabei keine Zellen in der Markierung sind, die etwas anderes als Zahlen enthalten. Dann rufe ich das Makro auf, z. B. über Menü Extras -- Makro -- Makros... -- Ausführen und ich bekomme das richtige Ergebnis.
Ich kann es Dir nicht erklären, warum es bei Dir nicht so ist, es gibt auch keinen ver-nünftigen Grund dafür, aber wenn der Fehler weiter besteht, könnte man (zeitweilig) noch ein paar zusätzliche Kontrollen einbauen, um der Ursache des Fehlers auf die Spur zu kommen. Das wäre für´s erste mein Vorschlag:
Sub Berechnen9()
Dim r As Range, z As Range
Rem Application.ScreenUpdating = False
Set r = Application.Selection
For Each z In r
If VarType(z.Value) = 5 Then
MsgBox "hat vor der Berechnung den Wert " & CStr(z.Value) & Chr(13) & _
"nach der Addition + 173 den Wert " & CStr(z.Value + 173) & " (Zwischenergebnis)" & Chr(13) & _
"und am Ende der Berechnung den Wert " & CStr((z.Value + 173) / 100) & ".", , "Zelle " & z.Address
z.Value = (z.Value + 173) / 100
Else
MsgBox "enthält keine Zahl. Deshalb wird nichts berechnet.", , "Zelle " & z.Address
End If
Next
Rem Application.ScreenUpdating = True
End Sub
Überprüfe auch mal die Formatierung der Zellen, sie sollten als Zahl mit mindestens 2
<- 0,0
Nachkommastellen formatiert sein. (Evtl. 0,00 benutzen.)
Gruß,
CaroS
Antwort 6 von javansi
Hallo Caros,
es hat geklappt, die Urache war die Formatierung der Zellen.......ok
wie du weisst ,ich habe zwei formeln,die verwendet werden sollen.
diese z.Value = (z.Value + 173) / 100 soll für markierte Spalten-bereich
und die andre zValue / 100 für markierte zeilen-bereich .
kann man das programm so erweitern ,dass je nach markierter Bereich die entsprechende Formel ausgefürt wird..
Danke.
MfG
es hat geklappt, die Urache war die Formatierung der Zellen.......ok
wie du weisst ,ich habe zwei formeln,die verwendet werden sollen.
diese z.Value = (z.Value + 173) / 100 soll für markierte Spalten-bereich
und die andre zValue / 100 für markierte zeilen-bereich .
kann man das programm so erweitern ,dass je nach markierter Bereich die entsprechende Formel ausgefürt wird..
Danke.
MfG
Antwort 7 von CaroS
Hallo javansi,
ich gucke gerade jetzt erst rein und sehe diese Frage. Ist die ernst gemeint? Was würde wohl Dein Bäcker tun, wenn Du ihn nach zwei Brötchen für Linkshänder fragst? Und ihm dann allen Ernstes erklärst, dass Du sie ja im Unterschied zu den meisten anderen Menschen mit der rechten Hand halten musst, um sie mit links aufschneiden zu können. In sich ziemlich schlüssig, die Angelegenheit, aber manchmal weiß ich wirklich nicht, wie ich reagieren soll.
Bevor Du das Makro ausführst, kann Du völlig bliebige Bereiche markieren, d. h. ganze Zeilen, ganze Spalten, Teile davon, beliebig lange und breite (oder kurze und schmale) rechteckige Bereiche, auch zusammengesetzte, alles was Du willst. Es interessiert das Makro nicht im geringsten, ob der markierte Bereich in Deinen Augen eine Zeile oder eine Spalte (oder ein Teil davon) ist. Für Makros sind Bereiche etwas sehr allgemeines, einfach nur eine bestimmte Menge von Zellen.
Dass Du mehr als eine "Formel" hast, ist eine ganz andere Sache und erstmal nicht so schlimm. Bitte mach es auch nicht schlimmer, indem Du versuchst, dem Makro irgendwelche Kunststückchen beizubringen, es auf die Unterscheidung zwischen Zeilen und Spalten und deren unterschiedliche Bearbeitung abzurichten, es wird dadurch nur unnötig kompliziert.
Schreib für die zweite "Formel" ein zweites, einfaches Makro (schreib es vom ersten ab und ändere nur die "Formel") und rufe dann je nach Bedarf das eine oder andere auf.
Wenn Du beide "Formeln" trotzdem in einem Makro haben willst, würde ich mit Dir gerne klären, was ein markierter "Spalten-bereich" und was ein markierter "zeilen-bereich" ist. Das müsste dann ja vermutlich einer von uns beiden dem Makro klar machen, aber vorher muss einem selber erstmal klar sein, also wenigstens Dir oder mir.
Gruß,
CaroS
ich gucke gerade jetzt erst rein und sehe diese Frage. Ist die ernst gemeint? Was würde wohl Dein Bäcker tun, wenn Du ihn nach zwei Brötchen für Linkshänder fragst? Und ihm dann allen Ernstes erklärst, dass Du sie ja im Unterschied zu den meisten anderen Menschen mit der rechten Hand halten musst, um sie mit links aufschneiden zu können. In sich ziemlich schlüssig, die Angelegenheit, aber manchmal weiß ich wirklich nicht, wie ich reagieren soll.
Bevor Du das Makro ausführst, kann Du völlig bliebige Bereiche markieren, d. h. ganze Zeilen, ganze Spalten, Teile davon, beliebig lange und breite (oder kurze und schmale) rechteckige Bereiche, auch zusammengesetzte, alles was Du willst. Es interessiert das Makro nicht im geringsten, ob der markierte Bereich in Deinen Augen eine Zeile oder eine Spalte (oder ein Teil davon) ist. Für Makros sind Bereiche etwas sehr allgemeines, einfach nur eine bestimmte Menge von Zellen.
Dass Du mehr als eine "Formel" hast, ist eine ganz andere Sache und erstmal nicht so schlimm. Bitte mach es auch nicht schlimmer, indem Du versuchst, dem Makro irgendwelche Kunststückchen beizubringen, es auf die Unterscheidung zwischen Zeilen und Spalten und deren unterschiedliche Bearbeitung abzurichten, es wird dadurch nur unnötig kompliziert.
Schreib für die zweite "Formel" ein zweites, einfaches Makro (schreib es vom ersten ab und ändere nur die "Formel") und rufe dann je nach Bedarf das eine oder andere auf.
Wenn Du beide "Formeln" trotzdem in einem Makro haben willst, würde ich mit Dir gerne klären, was ein markierter "Spalten-bereich" und was ein markierter "zeilen-bereich" ist. Das müsste dann ja vermutlich einer von uns beiden dem Makro klar machen, aber vorher muss einem selber erstmal klar sein, also wenigstens Dir oder mir.
Gruß,
CaroS
Antwort 8 von javansi
hallo CaroS,
alles klar, ich habe deine Botschaft verstanden, also werde ich für jede Formel ein makro schreiben.
vielen Dank
und vielleicht bis zum nächsten mal.
MfG
alles klar, ich habe deine Botschaft verstanden, also werde ich für jede Formel ein makro schreiben.
vielen Dank
und vielleicht bis zum nächsten mal.
MfG

