Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1164to1168
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Unter Bedingung Formel mit VBA ausfüllen

Unter Bedingung Formel mit VBA ausfüllen
Keule30
Hallo, nach erfolgslosem googlen weiß ich nicht mehr weiter und bitte um eure Hilfe! Bin neu hier im Forum.
In Spalte A : steht ein kurzer Text
In Spalte B: stehen Nummern
In Spalte C: steht eine beliebige Formel, die sich auf andere diverse Zellen bezieht (keine Zellen aus Spalte A oder B)
Zur Zeit sieht der VBA-PART so aus:
Range("C4").Select
ActiveCell.FormulaR1C1 = "=IF(………..)”
Selection.AutoFill Destination:=Range("C4:C65536"), Type:=xlFillDefault
Dieser VBA-Code funktioniert auch, das Problem ist nur, dass das Makro bei seiner Ausführung viel zu lange braucht, da die Formel bis in die letzte Zeile nach unten ausgefüllt wird…obwohl es nur bis zu einer bestimmten variablen Zeile nötig ist.
Da die Tabelle immer in Zeile 4 beginnt (der Rest darüber sind Überschriften) und beliebig nach unten lang oder kurz sein kann und im Gegensatz zu anderen Zellen immer Spalte A oder B nicht leer sind,
bräuchte ich einen Code, der:
- die Formel ab Zelle C4 nach unten so lange ausfüllt, so lange die Zelle aus Spalte A oder die Zelle aus Spalte B von der gleichen Zeile nicht leer sind.
- Wenn dann in z.B. A14 nichts mehr steht und auch B14 leer ist, dann soll er die Formel nicht weiter nach unten ausfüllen, sondern die Schleife verlassen.
Ich freue mich auf eure Tipps!

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Unter Bedingung Formel mit VBA ausfüllen
30.06.2010 19:55:52
Beverly
Hi,
versuche es mal so:
    Dim loLetzte1 As Long
Dim loLetzte2 As Long
loLetzte1 = IIf(IsEmpty(Cells(Rows.Count, 1)), _
Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
loLetzte2 = IIf(IsEmpty(Cells(Rows.Count, 2)), _
Cells(Rows.Count, 2).End(xlUp).Row, Rows.Count)
Range("C4").Formula = "=IF(A1>B1,B1,A1)"
If loLetzte2 >= loLetzte1 Then
Range("C4").AutoFill Destination:=Range("C4:C" & loLetzte2), _
Type:=xlFillDefault
Else
Range("C4").AutoFill Destination:=Range("C4:C" & loLetzte1), _
Type:=xlFillDefault
End If



Anzeige
AW: Unter Bedingung Formel mit VBA ausfüllen
30.06.2010 20:07:39
Keule30
Vielen Dank erst mal für die schnelle Antwort!
Ich werde es spätestens morgen testen können, aber:
BITTE :-D, kannst Du mit ein paar kommentaren dieses Makro erläutern?
Ich würde gern nachvollziehen können, welcher Schritt was bewirkt!
AW: Unter Bedingung Formel mit VBA ausfüllen
30.06.2010 20:24:07
Beverly
Hi,
    Dim loLetzte1 As Long       ' Variable für letzte belegte Zeile der Spalte A
Dim loLetzte2 As Long       ' Variable für letzte belegte Zeile der Spalte B
' letzte belegte Zeile in Spalte A ermitteln
loLetzte1 = IIf(IsEmpty(Cells(Rows.Count, 1)), _
Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
' letzte belegete Zeile in Spalte B ermitteln
loLetzte2 = IIf(IsEmpty(Cells(Rows.Count, 2)), _
Cells(Rows.Count, 2).End(xlUp).Row, Rows.Count)
' Formel in C4 eintragen
Range("C4").Formula = "=IF(A1>B1,B1,A1)"
' wenn letzte belegte Zeile in Spalte B >= Spalte A
If loLetzte2 >= loLetzte1 Then
' C4 bis C letzte belegte Zeile der Spalte B Autoausfüllen
Range("C4").AutoFill Destination:=Range("C4:C" & loLetzte2), _
Type:=xlFillDefault
' andernfalls
Else
' C4 bis C letzte belegte Zeile der Spalte A Autoausfüllen
Range("C4").AutoFill Destination:=Range("C4:C" & loLetzte1), _
Type:=xlFillDefault
End If



Anzeige
AW: Unter Bedingung Formel mit VBA ausfüllen
02.07.2010 09:33:23
Keule30
Tausend Dank Dir! Das Makro funktionert...Du hast mich damit kurz vor dem Nervenzusammenbruch bewahrt!
Ich habe auch schon versucht VBA zu verstehen und mich in diverse Tutorials rein gelesen, aber naja:-(
Das Problem sind nicht die Arten von Schleifen, sondern die englische Syntax, hier z.B. von Deinem Makro:
loLetzte2 = IIf(IsEmpty(Cells(Rows.Count, 2)), _
Woher kann ich z.B. wissen, dass dieses "lo" vor das Wort Letzte muss, oder das "IIF" mit doppel I ?
In der Übersichtstabelle, welche ich habe, "Excel Schlüsselwörter deutsch - englisch" kann ich kein IF mit doppel I finden.
Ich hoffe Du hast Verständnis für diese "blöde" Frage.
Grüße!
Anzeige
AW: Unter Bedingung Formel mit VBA ausfüllen
02.07.2010 09:49:02
hary
Hallo
zu iif siehe hier:https://www.herber.de/forum/archiv/276to280/t277760.htm
zu loLetzte: Ist einfach ein Name fuer die Variable. Kannst auch Hinz oder Kunz nehmen.
Nur bei Codes ist es besser wenn man den Variblen einen Namen gibt um zu sehen was
gemeint ist.
Nimmt man zB. Dim a as long
Dim b as long
weiss man nicht wofuer a oder b steht.
schreibt man dagegen zB. Dim letzteZelle as Long dann ist die letzte Zelle gemeint.
also nur zur bessseren lesen des Codes.
gruss hary
AW: Unter Bedingung Formel mit VBA ausfüllen
02.07.2010 10:43:31
Beverly
Hi,
welchen Namen du der Variablen gibst, bleibt dir überlassen, aber man sollte ihr einen Namen geben, der etwas mit dem zu tun hat, was man darauf schreibt bzw. was man mit der Variablen anstellen will. Man sollte aber einen Präfix davor setzen, welcher den Typ der Variablen wiedergib, weil das die Arbeit mit den Variablen wesentlich erleichtert. Wenn du eine Variable rngBereich (rng = Range) benennst, weißt du im weiteren Verlauf des Codes sofort, dass du darauf keinen Long-Wert schreiben kannst.
An und für sich haben sich bei den Programmierern die folgenden Präfixe eingebürgert:
Programmierkonventionen für VB - Link zur Seite.
Ich habe bewusst "sollte" geschrieben, denn es gibt keine festgeschriebenen internationalen Regeln für die Bezeichnung von Variablen, aber es erleichtert das Verständnis für fremde Codes.
IIF ist nichts anderes als die Umsetzung der Tabellenfunktion WENN() in VBA.


Anzeige

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige