ich möchte mich mal an Funktionen in VBA wagen. Eigentlich wollte ich es ziemlich einfach halten, indem ich nur eine extrem lange If, Then, ElseIf, Else, EndIf Reihe mit verschiedenen Prüfkriterien definieren.
Nun da ich mich mit Funktionen in VBA gar nicht auskenne, mal eine kurze Frage.
Üblicherweise schreibe ich in eine Zelle =A15*B15. Wenn ich diese Zelle nun nach unten ziehe, mit dieser Funktion, dann ergibt sich für die nächste Zelle =A16*B16 usw.
Wie läuft das ganze nun in VBA ab? Wenn ich die Funktion auf A15 und B15 auslege in VBA, wird sich das automatisch mitbewegen, wenn ich die Zelle nach unten Ziehe mit der Funktion? Oder muss ich in VBA sowas wie "betrachte den Wert der Ausgangsspalte und den Wert 1 Spalte rechts von der Ausgangsspalte" programmieren?
Hallo! Zunächst mal: Was sind für Dich Funktionen? Formeln? Dann gibt es vier Varianten, sie in die Tabelle einzutragen: .Formula, .FormulaR1C1 und deren Local-Derivate. Ferner gibt es wie in Excel auch die Möglichkeit Spalte und/oder Zeile absolut zu stellen. Oder geht es Dir darum, Ergebnisse aus Formeln als Wert in die Tabelle zu schreiben?
Mehr Infos!
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
09.03.2016, 15:40 (Dieser Beitrag wurde zuletzt bearbeitet: 09.03.2016, 15:49 von Rabe.)
(09.03.2016, 14:49)Green schrieb: Üblicherweise schreibe ich in eine Zelle =A15*B15. Wenn ich diese Zelle nun nach unten ziehe, mit dieser Funktion, dann ergibt sich für die nächste Zelle =A16*B16 usw.
Wie läuft das ganze nun in VBA ab? Wenn ich die Funktion auf A15 und B15 auslege in VBA, wird sich das automatisch mitbewegen, wenn ich die Zelle nach unten Ziehe mit der Funktion? Oder muss ich in VBA sowas wie "betrachte den Wert der Ausgangsspalte und den Wert 1 Spalte rechts von der Ausgangsspalte" programmieren?
In VBA schreibst Du die Formel (besser wäre: das Ergebnis) direkt in die Zelle, mit VBA wird nix gezogen, für die weiteren Zellen muß das auch programmiert werden
Du könntest schreiben:
For i = 15 to 25 ' Bereich anpassen Range("C" & i) = Range("A" & i) + Range("B" & i) ' Spalten anpassen Next i
oder Du kopierst die Zelle nach unten: Range("C15").FormulaLocal = "=A15 + B15" Range("C15").Copy Range("C16:C25")
Hier die getesteten Makros für die beiden Lösungen mit Formel:
OptionExplicit
Sub einfügen_Schleife() Dim i AsInteger
For i = 15To25' Bereich anpassen Range("C" & i) = Range("A" & i) + Range("B" & i) ' Spalten anpassen Next i EndSub
Sub einfügen_kopieren() Range("C15").FormulaLocal = "=A15 + B15" Range("C15").Copy Range("C16:C25") EndSub
Hier 2 Lösungen für das direkte eintragen des Ergebnisses:
Sub Ergebnis_eintragen() Dim i AsInteger
For i = 15To25' Bereich anpassen ' Range("C" & i) = WorksheetFunction.Sum(Range("A" & i), Range("B" & i)) ' Spalten anpassen Range("C" & i) = WorksheetFunction.Sum(Range("A" & i & ":B" & i)) ' Spalten anpassen Next i EndSub
Folgende(r) 1 Nutzer sagt Danke an Rabe für diesen Beitrag:1 Nutzer sagt Danke an Rabe für diesen Beitrag 28 • Green
(09.03.2016, 15:20)RPP63 schrieb: Hallo! Zunächst mal: Was sind für Dich Funktionen? Formeln? Dann gibt es vier Varianten, sie in die Tabelle einzutragen: .Formula, .FormulaR1C1 und deren Local-Derivate. Ferner gibt es wie in Excel auch die Möglichkeit Spalte und/oder Zeile absolut zu stellen. Oder geht es Dir darum, Ergebnisse aus Formeln als Wert in die Tabelle zu schreiben?
Mehr Infos!
Gruß Ralf
Hi!
Das ist eine sehr gute Frage. Als Funktion meine ich momentan eine vorprogrammierte "WENN;DANN;SONST" Funktion mit IF;THEN;ELSEIF. Da WENN auf 8 Verschachtelungen begrenzt ist und die Sache in Excel ziemlich unübersichtlich ist, habe ich mir gedacht, das ganze per IF Funktion in VBA zu programmieren. Am Ende möchte ich in der Zelle nur noch sowas wie
=EIGENEFUNKTION1
eingeben. Die Funktion selbst gestaltet sich hingegen so, dass mehrere Bedingungen in 27 verschachtelten IF's bzw. IF's und ELSEIF's geprüft werden. Bei der Prüfung der Bedingungen wird das ganze Zellenabhängig. Zur Zelle A1 gehören bspw. die Zellen C1, D1 und G1. C1, D1 und G1 müssen dann in der IF auf den zutreffenden Fall überprüft werden. Nun möchte ich das ganze aber auch in der Zelle A2 haben. Dazu gehören dann allerdings C2, D2 und G2. Reicht es hier aus =EIGENEFUNKTION1 auszuführen? Wird die Anpassung automatisch geregelt? Muss ich auf etwas achten, wenn ich das so geregelt haben möchte? (Wie erwähnt, habe ich keine Kenntnisse in der Programmierung von Formeln/Funktionen. Gesehen habe ich nur, dass mit einem "Function" im Kopf das ganze zugewiesen werden kann.)
Nochmal ein einfacheres Beispiel. Ich prüfe Autos auf ihren Zustand. In meiner EXCEL Tabelle kann ich die Marke (BMW, Audi, Mercedes, VW) und die Einheit des Verbrauchs (Liter, ccm, Gallone) auswählen. Dazu gebe ich noch pro Auto die gefahrenen Kilometer sowie den Verbrauch an.
Jetzt soll meine Funktion folgendes tun. 1. Schaut diese, welche Marke ich gewählt habe. 2. Prüft diese die dazugehörige Einheit. 3. Prüft meine Funktion die zu 1 und 2 gehörigen Fälle: Fall 1 -> Kilometer < 50.000 ; Fall 2 -> Kilometer >= 50.000 4. Liegt das ganze im Fall 2, so muss der momentane Verbrauch in einem Bereich von bspw. 3% liegen.
Auf Grundlage von 1, 2, 3 und 4 ergibt sich nun eine Einschätzung zum Zustand des Autos (bspw. "i. O.", "teilweise i. O." oder "n. i. O."), je nachdem welche Kriterien zutreffen. Das Ganze soll sich natürlich in allen dazu vorgesehenen Zellen abspielen.
09.03.2016, 15:48 (Dieser Beitrag wurde zuletzt bearbeitet: 09.03.2016, 15:53 von Rabe.
Bearbeitungsgrund: Zitat auf Relevantes gekürzt
)
(09.03.2016, 15:40)Rabe schrieb: In VBA schreibst Du die Formel (besser wäre: das Ergebnis) direkt in die Zelle, mit VBA wird nix gezogen, für die weiteren Zellen muß das auch programmiert werden
Hi! Vielen Dank, dann werde ich mal gucken ob ich das hinkriege, ansonsten muss ich wohl jeder Zelle eine neue Programmierung geben. Bei 76 Zellen wird's nicht so spaßig ^^... Gruß Green
09.03.2016, 15:52 (Dieser Beitrag wurde zuletzt bearbeitet: 10.03.2016, 09:46 von Rabe.
Bearbeitungsgrund: Excel Version korrigiert
)
Hi,
(09.03.2016, 15:45)Green schrieb: Da WENN auf 8 Verschachtelungen begrenzt ist und die Sache in Excel ziemlich unübersichtlich ist, habe ich mir gedacht, das ganze per IF Funktion in VBA zu programmieren.
diese Begrenzung auf 8 WENN ist doch mit Excel 2013 2010 aufgehoben.
Folgende(r) 1 Nutzer sagt Danke an Rabe für diesen Beitrag:1 Nutzer sagt Danke an Rabe für diesen Beitrag 28 • Green
09.03.2016, 15:55 (Dieser Beitrag wurde zuletzt bearbeitet: 09.03.2016, 15:58 von Rabe.)
Hi,
(09.03.2016, 15:45)Green schrieb: Nochmal ein einfacheres Beispiel. Ich prüfe Autos auf ihren Zustand. In meiner EXCEL Tabelle kann ich die Marke (BMW, Audi, Mercedes, VW) und die Einheit des Verbrauchs (Liter, ccm, Gallone) auswählen. Dazu gebe ich noch pro Auto die gefahrenen Kilometer sowie den Verbrauch an.
Du weißt doch schon, was wir Helfer erwarten:
Also stelle bitte (D)eine (Beispiel-)Tabelle als Excel-Datei zur Verfügung oder stelle die relevanten Ausschnitte hier dar, siehe die als Wichtige Themen: markierten Forums-Beiträge. Deine Mustertabelle sollte mindestens etwa 10-15 Datensätze haben, sensible Daten anonymisiert. Vom Aufbau her muss sie aber deinem Original gleichen. Auch ein Wunschergebnis sollte dargestellt und als solches erkennbar sein. Die farbigen Texte sind anklickbare Links:
Eine Bitte: Anstatt Screenshots ist eine Datei oder ein Ausschnitt besser! "Du gehst ja auch nicht in die Werkstatt und gibst ein Foto Deines kaputten Autos ab!"
Für mich klingt das nicht sehr kompliziert. Und nimm gleich Dein richtiges Beispiel, nichts Abgespecktes.
die Begrenzung ist schon mit 2010 aufgehoben. Aber wer soviel Verschachtelungen braucht, hat sein Problem nicht mal ansatzweise durchdacht und sich nicht mit Excel befasst!!!!!!
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr! Über Rückmeldungen würde ich mich freuen.
09.03.2016, 16:28 (Dieser Beitrag wurde zuletzt bearbeitet: 09.03.2016, 16:29 von Green.)
(09.03.2016, 15:55)Rabe schrieb: Für mich klingt das nicht sehr kompliziert. Und nimm gleich Dein richtiges Beispiel, nichts Abgespecktes.
Hallo,
eigentlich wollte ich hier nur auf eine allgemeine Frage ansetzen, weshalb ich auch einen neuen Thread eröffnet habe. Meine Fachsprache ist aber so schlecht, dass dies nicht aufgegangen ist. Das eigentliche Problem befindet sich in meinem anderen Thread mit Beispieldatei, falls es jemanden interessieren sollte. Allerdings sind auch dort nicht ALLE Kriterien und Bedingungen enthalten, weil es ziemlich viele sind.
Zitat:Hi,
Zitat: schrieb:dass mehrere Bedingungen in 27 verschachtelten IF's bzw. IF's und ELSEIF's geprüft werden
Warum blos so viele IF's. [img] Dateiupload bitte im Forum! So geht es: Klick mich! ] Das klingt für mich nach Verweisen, kannst du ein Beispiel hochladen? lg Chris
Da du so freundlich fragst, hänge ich dir mal gerne eins an^^... Für weitere Infos zum Beispiel kannst du in meinem zweiten Thread mal schauen (Es geht um das "3. Blatt_report"). Im Beispiel sind nur die Kriterien zur ISO hinterlegt. Alle weiteren bräuchten ebenfalls solche "Tabellen" als Ausmaße bzw. sogar größere. Allerdings ist diese Lösung mit den Tabellen nicht schön und soll auch gar nicht sichtbar sein wenn möglich. Ich habe nochmals die wichtigen Elemente zur Auswahl farblich hervorgehoben. Der Link zum Thread: http://www.clever-excel-forum.de/Thread-...schachteln
Zitat:Hallo,
die Begrenzung ist schon mit 2010 aufgehoben. Aber wer soviel Verschachtelungen braucht, hat sein Problem nicht mal ansatzweise durchdacht und sich nicht mit Excel befasst!!!!!!
Dann belehre mich bitte eines besseren :)... Ihr seid meine einzige Hilfe neben Google. Allerdings ist Google nicht immer dein Freund, so zumindest habe ich es erfahren. Ich wäre jeder Hilfe extrem dankbar.