Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Division

VBA Division
16.09.2016 13:11:12
Berg.Legende
Hallo,
ich muss eine Division per VBA durchführen.
A B C
100 1 =1/100
200 1 =1/200
Leer leer =Wert ""
50 2 =2/50
... ... =...
Wenn ich schreibe:

Sub Dividieren()
dim i as integer
For i = 1 To 100
Cells(i, 3).Value = Cells(i, 2).Value / Cells(i, 1).Value
Next i
End Sub

dann hört er bei der Leerzeile auf und bringt einen Leerlauffehler.
Wie mach ich des dass er in die Leerzeile "" nichts reinschreibt aber dann fortlaufend weiter dividiert?
Vorab vielen Dank!
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Division
16.09.2016 13:24:22
Berg.Legende
Danke konnte mir selber helfen.
AW: VBA Division
16.09.2016 13:42:20
Daniel
Hi
da gibt's mehrere Möglichkeiten.
du kannst eine Prüfung einbauen, ob in den beiden Zellen auch Zahlen stehen, wobei du dann auch prüfen solltest ob der Divisor 0 ist.
For i = 1 To 100
If IsNumeric(Cells(i, 1).value) and IsNumeric(Cells(i, 2).value and Cells(i, 1).Value  0 then
Cells(i, 3).Value = Cells(i, 2).Value / Cells(i, 1).Value
End If
next

Aber es ist in VBA nicht besonders sinnvoll, Zellen einzeln per Schleife zu bearbeiten.
Das hier kannst du mit einer Formel viel einfacher lösen und dabei auch gleich die Fehler ohne aufwendige Prüfung ausbügeln (WennFehler).
man kann auch die Formel per VBA einfügen und dann bei Bedarf die Formeln durch die Werte erstzten:
With Range("C1:C300")
.FormulaR1C1 = "=IFERROR(RC2/RC1,"""")"
.Formula = .Value
end with

das läuft nicht nur schneller durch, du brauchst auch keine Variablen und beim Testen im Einzelstep ist es viel angenehmer, wenn man sich nicht durch die Schleife durchklicken muss.
eine weitere Möglichkeit wäre diese, aber sie funktioniert nur für die 4 Grundrechenarten:
du kannst die Werte kopieren und beim Einfügen dann die Werte mit den bereits in den Zellen stehenden Werten verrechnen. Das ist eine Optionn beim Inhalte-Einfügen.
auch die geht per Code:
Range("B1:B100").Copy
Range("C1").PasteSpecial xlPasteValues
Range("A1:A100").Copy
Range("C1").PasteSpecial xlPasteValues, operation:=xlDivide
gruß Daniel
Anzeige
;
Anzeige

Infobox / Tutorial

VBA Division in Excel: So gelingt die ganzzahlige Division


Schritt-für-Schritt-Anleitung

Um eine Division in VBA durchzuführen, kannst Du folgende Schritte befolgen:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.
  2. Füge ein neues Modul ein: Rechtsklick auf „VBAProject (DeineDatei)“ > Einfügen > Modul.
  3. Kopiere den folgenden VBA-Code in das Modul:
Sub Dividieren()
    Dim i As Integer
    For i = 1 To 100
        If IsNumeric(Cells(i, 1).Value) And IsNumeric(Cells(i, 2).Value) And Cells(i, 1).Value <> 0 Then
            Cells(i, 3).Value = Cells(i, 2).Value / Cells(i, 1).Value
        End If
    Next i
End Sub
  1. Schließe den VBA-Editor und kehre zu Excel zurück.
  2. Führe das Makro aus: ALT + F8, wähle „Dividieren“ und klicke auf „Ausführen“.

Dieser Code überprüft, ob die Eingabewerte Zahlen sind und ob der Divisor nicht Null ist, bevor die Division durchgeführt wird.


Häufige Fehler und Lösungen

  • Leerlauffehler: Achte darauf, dass Dein Code überprüft, ob die Zellen leer sind oder nicht. Der oben angegebene Code nimmt diese Prüfung bereits vor.
  • Division durch Null: Stelle sicher, dass Du eine Prüfung auf Null im Divisor hast, um Fehler zu vermeiden.
  • Typenkonflikte: Achte darauf, dass die Zellen, die Du teilst, tatsächlich numerische Werte enthalten. Dies kannst Du mit IsNumeric überprüfen.

Alternative Methoden

Es gibt auch alternative Methoden, um Divisionen in Excel durchzuführen, ohne VBA zu verwenden:

  1. Excel-Formeln: Du kannst in einer Zelle die Formel =WENNFEHLER(B1/A1; "") verwenden, um Divisionen durchzuführen und Fehler zu vermeiden.
  2. Einfügen von Formeln: Mit VBA kannst Du Formeln direkt in Zellen einfügen. Beispiel:
With Range("C1:C100")
    .FormulaR1C1 = "=IFERROR(RC2/RC1,"""")"
    .Value = .Value
End With
  1. Werte kopieren und dividieren: Eine weitere Möglichkeit, Werte in Excel zu dividieren, ist die Verwendung der PasteSpecial-Funktion:
Range("B1:B100").Copy
Range("C1").PasteSpecial xlPasteValues
Range("A1:A100").Copy
Range("C1").PasteSpecial xlPasteValues, Operation:=xlDivide

Praktische Beispiele

Hier sind einige Beispiele, wie Du die vba division in verschiedenen Szenarien anwenden kannst:

  • Ganzzahlige Division: Verwende den Operator \ für die ganzzahlige Division in VBA:
Cells(i, 3).Value = Cells(i, 2).Value \ Cells(i, 1).Value
  • Restdivision: Um den Rest einer Division zu berechnen, kannst Du den Operator Mod verwenden:
Cells(i, 3).Value = Cells(i, 2).Value Mod Cells(i, 1).Value

Tipps für Profis

  • Nutze die Option Explicit-Anweisung am Anfang Deiner Module, um sicherzustellen, dass alle Variablen deklariert sind. Dies kann helfen, Fehler zu vermeiden.
  • Überlege, ob Du die Excel VBA Division-Funktionen wie WorksheetFunction.Divide verwenden möchtest, um die Effizienz zu steigern.
  • Experimentiere mit Fehlerbehandlungsroutinen, um unerwartete Fehler im Code elegant abzufangen.

FAQ: Häufige Fragen

1. Wie mache ich eine ganzzahlige Division in VBA?
Verwende den Operator \ für die ganzzahlige Division. Beispiel: Cells(i, 3).Value = Cells(i, 2).Value \ Cells(i, 1).Value.

2. Was ist der Unterschied zwischen Division und ganzzahliger Division in VBA?
Die normale Division (/) gibt das Ergebnis mit Dezimalstellen zurück, während die ganzzahlige Division (\) nur den ganzzahligen Anteil des Ergebnisses zurückgibt.

3. Was passiert, wenn ich versuche, durch Null zu dividieren?
Ein Versuch, durch Null zu dividieren, führt zu einem Laufzeitfehler. Stelle sicher, dass Du die Zellen auf Null überprüfst, bevor Du die Division durchführst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige