Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.10.2025 10:28:49
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: 2 unterschiedliche Bereiche in eine Schleife

2 unterschiedliche Bereiche in eine Schleife
23.01.2006 19:21:56
Korl
Hallo,
ich möchte, wenn möglich, 2 unterschiedliche Spalten in einer Schleife abarbeiten lassen.
Hier mein Code:
Sub TextinSpalten()
' es werden die Textformatierten Zellen in Zahlen umgewandelt
Dim z As Range, lLetzteT1 As Long
Set wksT1 = Worksheets("Temp1")
lLetzteT1 = IIf(wksT1.Range("B65536") <> "", 65536, wksT1.Range("B65536").End(xlUp).Row)
For Each z In wksT1.Range("B1:B" & lLetzteT1)
z.Value = z.Value * 1
Next z
  
End Sub
In "Range("G1:G2" & lLetzteT1)" soll das gleiche ablaufen wie schon in Spalte "B".
Einige Schreibweisen habe ich schon versucht aber... oder bleibt mir nichts anderes üblich als eine zusätzlich neue "Sub" zu erstellen.
Mir geht es hierbei lediglich um die Schnelligkeit der Abarbeitung.
Gruß Korl
Anzeige

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: 2 unterschiedliche Bereiche in eine Schleife
23.01.2006 19:35:45
Anne
Hi,
ist völlig egal, die Zellen müssen in jedem Fall alle durchlaufen werden.
mfg Anne
AW: 2 unterschiedliche Bereiche in eine Schleife
24.01.2006 00:03:20
Beverly
Hi Anne,
das ist nicht völlig egal. Bei je einer getrennten Schleife für jede Spalte müssten die Zeilen von 1 bis zur letzten belegten Zelle 2mal durchlaufen werden. Wenn man das in einer einzigen Schleife macht, werden die Zeilen nur einmal durchlaufen und in einem Ritt beide Spalten geändert. Das hat bei wenigen Zeilen natürlich keine Einfluss auf die Performance, aber wenn es dann schon einige 1000 sind, ganz gewiss. Kannst den Unterschied ja mal ausprobieren ;-).
Bis später,
Karin
Anzeige
AW: 2 unterschiedliche Bereiche in eine Schleife
24.01.2006 07:43:27
Korl
Hallo Karin,
Danke für Deine ausführliche Erläuterung. Da habe ich dann wiederum dazu gelernt.
Ich wünsche Dir einen schönen Tag.
Gruß Korl
AW: 2 unterschiedliche Bereiche in eine Schleife
23.01.2006 19:47:55
Beverly
Hi,
versuche es mit diesem Code
Sub TextinSpalten() ' es werden die Textformatierten Zellen in Zahlen umgewandelt Dim z As Long, lLetzteT1 As Long Dim wksT1 Set wksT1 = Worksheets("Temp1") lLetzteT1 = IIf(wksT1.Range("B65536") <> "", 65536, wksT1.Range("B65536").End(xlUp).Row) For z = 1 To lLetzteT1 Cells(z, 2).Value = Cells(z, 2).Value * 1 Cells(z, 7).Value = Cells(z, 7).Value * 1 Next z End Sub
Bis später,
Karin
Anzeige
AW: 2 unterschiedliche Bereiche in eine Schleife
23.01.2006 20:08:45
Korl
Hallo Anne und Karin,
ich bedanke mich zunächst für Eure Unterstützung.
Anne, Deine Antwort klingt logisch, Danke.
Karin, der Debugger meint die Typen sind unverträglich.
Ich habe mir alles noch mal durch den Kopf gehen lassen, denn in der zweiten Spalte, braucht eigentlich nur die erste Zelle umgewandelt werden.
Die Frage währe für mich, gibt es noch eine andere Schreibweise hierfür als eine Schleife auf eine Zelle zu stellen?
Gruß Korl
Anzeige
AW: 2 unterschiedliche Bereiche in eine Schleife
23.01.2006 23:52:21
Beverly
Hi,
dann sage mir bitte nicht nur dass, sondern auch an welcher Stelle der Debugger streikt, denn bei mir hat er nichts gesagt. Ich poste keinen Code, den ich nicht getestet habe.
Bis später,
Karin
AW: 2 unterschiedliche Bereiche in eine Schleife
24.01.2006 00:30:29
Korl
Hallo Karin,
ich habe nach der Ursache gesucht warum der Debugger angesprungen ist.
Die Sub rufe ich von einem anderen Tabellenblatt auf und deshalb sprang der Debugger an.
Also grundsätzlich läuft Dein Code.
Entschuldige bitte, dass ich so flüchtig damit umgegangen bin. Es tut mir Leid.
Ich bedanke mich trotzdem noch mal für Deine Mühe.
Gruß Korl
Anzeige
AW: 2 unterschiedliche Bereiche in eine Schleife
24.01.2006 09:39:23
Beverly
Hi,
ist schon OK. Mich hat es nur mächtig gewundert und es war reines Interesse, was mich zu meiner Rückfrage veranlasst hat. Es ist halt so, dass man mit einem nachgestellten Beispiel nicht alle Bedingungen des Originals simulieren kann, und dann treten eben solche Inkompatibilitäten auf.
Bis später,
Karin
Anzeige
Text in den Zellen? o.T.
24.01.2006 00:12:14
Josef
Gruß Sepp
AW: Text in den Zellen? o.T.
24.01.2006 00:53:09
Korl
Hallo Sepp,
ich habe mir das Klassenmodul eingebunden von
http://www.online-excel.de/fom/fo_read.php?f=3&bzh=195&h=177&ao=1#a123x
und trotzdem werden Zahlen immer noch als Text dagestellt. Das multiplizieren mit 1 ist mir immer noch die sicherste Methode der Umwandlung. ;-)
Gruß Korl
Anzeige
AW: Text in den Zellen? o.T.
24.01.2006 09:54:41
Beverly
Hi,
ich denke, so sicher ist die Multiplikation mit 1 doch nicht. Bei mir ändert deine Codezeile
Cells(z, 2).Value = Cells(z, 2).Value * 1 die Textzahl nämlich nicht in einen numerischen Wert um. Ich habe mir den Code in deinem Link jetzt nicht angeschaut, aber ich verwende z.B.
Cells(z, 2).NumberFormat = "General"
und das funktioniert.
 
Bis später, Karin
Anzeige
AW: nicht mit Detimalzahlen
24.01.2006 11:16:53
Korl
Hallo Karin,
ich freue mich über Dein Interesse und bedanke mich dafür.
In meinen Projekt lese ich mir ein "*.csv" und bearbeite diese.
Diese Option ".Cells.NumberFormat = "General"" habe ich mit drin.
Leider funktioniert es nicht mit Dezimalzahlen. Eine "Ganzzahl" wird umgewandelt, darum diese Multiplikation mit 1.
Gruß Korl
Anzeige
AW: nicht mit Detimalzahlen
24.01.2006 13:09:15
Beverly
Hi,
ist schon eine eigenartig und interessante Sache. Bei mir erbringt die reine Multiplikation mit 1 nichts. Wäre zwar logisch, da es in Formeln in der Tabelle ja auch funktioniert. Aber VBA ist nicht immer identisch mit dem, was Formeln machen. Der Code mit der eigentlichen Formatumwandlung nach Standard dagegen funktioniert, auch bei Kommazahlen.
Ich hänge mal Spaßes halber meine Datei an.
https://www.herber.de/bbs/user/30329.xls
Die Ursache für das Ganze kann natürlich daran liegen, dass beim Datenimprot aus der CSV noch irgendwelche anderen Dinge ablaufen, die die Enddatei irgendwie beeinflussen, was jedoch nicht so ohne weiteres nachvollziehbar ist.
Bis später,
Karin
Anzeige
AW: nicht mit Detimalzahlen
24.01.2006 15:09:59
Korl
Hallo Karin,
ja, es ist schon eigenartig. Ich habe mir Deine Datei angesehen und obwohl D1 als Text formatiert steht, ist sie bei mir eine Zahl.
 
 DEF
11,22222WAHR- Zelle D1 ist als Text formatiert
2  - Makro "multiplikation" bringt keine Änderung in ein Zahlenformat
37,33332WAHR- Makro "format_general" ändert in das Standart-Format
Formeln der Tabelle
E1 : =ISTZAHL(D1)
D3 : =D1*6
E3 : =ISTZAHL(D3)
 
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML  3.0    Download  
Hier ist eine csv von mir: https://www.herber.de/bbs/user/30335.zip
Wenn sie manuell importiert wird ist alles in Ordnung.
Wird sie mittels Makro eingelesen, lässt sie sich mittels "Daten/TextinZahl" auch umwandeln. Will ich dann aber in xl2000 damit arbeiten wirds ...
Mit der Multiplikation mit 1 läuft es dann in beiden Systemen.
Gruß Korl
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

2 unterschiedliche Bereiche in einer Excel VBA Schleife abarbeiten


Schritt-für-Schritt-Anleitung

Um zwei unterschiedliche Bereiche in einer Excel VBA Schleife abzuarbeiten, kannst du die folgende Schritt-für-Schritt-Anleitung befolgen:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (dein Arbeitsblattname)", wähle "Einfügen" und dann "Modul".

  3. Gib den folgenden Code ein:

    Sub TextinSpalten()
       ' Es werden die Textformatierten Zellen in Zahlen umgewandelt
       Dim z As Long, lLetzteT1 As Long
       Dim wksT1 As Worksheet
    
       Set wksT1 = Worksheets("Temp1")
       lLetzteT1 = IIf(wksT1.Range("B65536") <> "", 65536, wksT1.Range("B65536").End(xlUp).Row)
    
       For z = 1 To lLetzteT1
           Cells(z, 2).Value = Cells(z, 2).Value * 1
           Cells(z, 7).Value = Cells(z, 7).Value * 1
       Next z
    End Sub
  4. Führe das Makro aus: Gehe zurück zu Excel, drücke ALT + F8, wähle TextinSpalten und klicke auf "Ausführen".


Häufige Fehler und Lösungen

  • Debugger stellt Typen als unverträglich dar: Überprüfe, ob du die richtige Zelle ansteuerst und ob die Zellen korrekt formatiert sind. Das kann insbesondere bei der Verwendung von detimalzahlen auftreten.

  • Werte werden nicht umgewandelt: Stelle sicher, dass die Zellen tatsächlich mit einem Textformat belegt sind. Manchmal hilft es, die Zellen zuerst auf "Allgemein" zu formatieren.


Alternative Methoden

Falls du eine spezifische Zelle (z.B. nur die erste Zelle in Spalte B) umwandeln möchtest, kannst du das auch ohne eine Schleife tun:

Cells(1, 2).Value = Cells(1, 2).Value * 1

Diese Methode ist schneller, wenn du nur eine Zelle anpassen möchtest.


Praktische Beispiele

  1. Umwandlung von Text zu Zahl für mehrere Zellen:

    For z = 1 To 10
       Cells(z, 2).Value = Cells(z, 2).Value * 1
    Next z

    In diesem Beispiel werden die ersten 10 Zellen in Spalte B umgewandelt.

  2. Umwandlung spezifischer detimalzahlen:

    Angenommen, du hast in Spalte D die Werte als detimalzahlen, kannst du diese wie folgt umwandeln:

    For z = 1 To lLetzteT1
       Cells(z, 4).Value = Cells(z, 4).Value * 1
    Next z

Tipps für Profis

  • Verwende Application.ScreenUpdating = False: Dies kann die Ausführungsgeschwindigkeit deiner Schleifen erheblich erhöhen, besonders bei großen Datenmengen.

  • Nutze Arrays für bessere Performance: Wenn du mit vielen Zellen arbeitest, lade die Daten in ein Array, bearbeite sie und schreibe sie am Ende zurück in die Zellen. Das reduziert die Anzahl der Interaktionen mit dem Excel-Blatt.

Dim data As Variant
data = wksT1.Range("B1:B" & lLetzteT1).Value

For z = LBound(data, 1) To UBound(data, 1)
    data(z, 1) = data(z, 1) * 1
Next z

wksT1.Range("B1:B" & lLetzteT1).Value = data

FAQ: Häufige Fragen

1. Was sind detimalzahlen und wie kann ich sie umwandeln?
Detimalzahlen sind Dezimalzahlen, die in Excel manchmal als Text formatiert sind. Um sie in Zahlen umzuwandeln, kannst du die Multiplikation mit 1 verwenden oder die Zellen auf das Format "Allgemein" setzen.

2. Wie kann ich eine Excel VBA Schleife effizienter gestalten?
Verwende Arrays, um die Anzahl der Interaktionen mit Excel zu minimieren, und schalte Application.ScreenUpdating aus, um die Ausführung zu beschleunigen.

3. Was mache ich, wenn mein Code nicht funktioniert?
Überprüfe die Referenzen und stelle sicher, dass alle Zellen die erwarteten Typen haben. Der Debugger kann dir helfen, den Fehler zu identifizieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige