Anzeige
Archiv - Navigation
1356to1360
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

Skript überspringt Zeilen mit Sonderzeichen...

Skript überspringt Zeilen mit Sonderzeichen...
23.04.2014 11:20:21
Jonas
...aber nicht immer.
Hallo alle miteinander!
Ich hab ein Skript, dass aus der Spalte A eines Blattes Zeilenblöcke rauskopieren und in ein separates Blatt einfügen soll, wenn es eines von drei Stichwörtern in den Zellen vorfindet (Je stichwort wird der folgende Datenblock dann in eins von drei separaten Blättern geschrieben). Dies funktioniert auch prima, bis auf ein Handvoll Zellen, in denen weibliche ordinalzeichen (ª ;Unicode 00AA; Windows Alt-0170) stehen. Diese dienen als optisches Trennmittel zwischen den Datenblöcken und sind in der Datei die ich zur Verarbeitung erhalte schon enthalten. Der Fehler tritt allerdings nicht konsistent auf, daher glaube ich nicht das Excel ein Problem mit der Verarbeitung des Sonderzeichens hat. Inkonsistent, weil wenn die letzte kopierte Zelle eines Datensatzes diese Zeichen enthält und anschließend ein neuer Datensatz beginnt, wird die Zelle erfolgreich auf das Zielblatt kopiert.
Hier mein Code:

Sub Erstellen()
Call Einlesen 'Das Einlesen findet aus einer TXT im gleichen Verzeichnis statt und  _
funktioniert tadellos. Alle Zeilen werden erfolgreich eingefügt.
ThisWorkbook.Worksheets("Verarbeitung").Activate
Dim i As Long
Dim j As Long
Dim k As Long
Worksheets("Exportregion 1").Range("A:A").ClearContents
Worksheets("Exportregion 2").Range("A:A").ClearContents
Worksheets("Exportregion 3").Range("A:A").ClearContents
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
If Worksheets("Verarbeitung").Cells(i, 1).Value = "EXPORTREGION 1" Then
k = Worksheets("Exportregion 1").Cells(Rows.Count, 1).End(xlUp).Row
j = i
Do
Worksheets("Exportregion 1").Cells(k, 1).Value = Worksheet("Verarbeitung"). _
Cells(j, 1).Value
j = j + 1
k = k + 1
Loop Until Worksheets("Verarbeitung").Cells(j, 1).Value = "" Or Worksheets(" _
Verarbeitung").Cells(j, 1).Value = "EXPORTREGION 1" Or Worksheets("Verarbeitung").Cells(j, 1).Value = "EXPORTREGION 2" Or Worksheets("Verarbeitung").Cells(j, 1).Value = "EXPORTREGION 3"
ElseIf Worksheets("Verarbeitung").Cells(i, 1).Value = "EXPORTREGION 2" Then
k = Worksheets("Exportregion 2").Cells(Rows.Count, 1).End(xlUp).Row
j = i
Do
Worksheets("Exportregion 2").Cells(k, 1).Value = Worksheets("Verarbeitung"). _
Cells(j, 1).Value
j = j + 1
k = k + 1
Loop Until Worksheets("Verarbeitung").Cells(j, 1).Value = "" Or Worksheets(" _
Verarbeitung").Cells(j, 1).Value = "EXPORTREGION 1" Or Worksheets("Verarbeitung").Cells(j, 1).Value = "EXPORTREGION 2" Or Worksheets("Verarbeitung").Cells(j, 1).Value = "EXPORTREGION 3"
ElseIf Worksheets("Verarbeitung").Cells(i, 1).Value = "EXPORTREGION 3" Then
k = Worksheets("Exportregion 3").Cells(Rows.Count, 1).End(xlUp).Row
j = i
Do
Worksheets("Exportregion 3").Cells(k, 1).Value = Worksheets("Verarbeitung"). _
Cells(j, 1).Value
j = j + 1
k = k + 1
Loop Until Worksheets("Verarbeitung").Cells(j, 1).Value = "" Or Worksheets(" _
Verarbeitung").Cells(j, 1).Value = "EXPORTREGION 1" Or Worksheets("Verarbeitung").Cells(j, 1).Value = "EXPORTREGION 2" Or Worksheets("Verarbeitung").Cells(j, 1).Value = "EXPORTREGION 3"
End If
Next i
For Each Item In Worksheets
Item.Range("A:A").Columns.AutoFit
Next
Call Versenden 'Das versenden per Mail funktioniert tadellos.
End Sub

und hier noch Beispieldatensätze zur besseren Verständlichkeit. Im Normalfall füllen die Datensätze zusammen ca 8000 Zeilen. Die Wörter "Exportregion 1" "Exportregion 2" und "Exportregion 3" dienen als Suchkriterium, um den Beginn eines neuen Datensatzes zu identifizieren.

EXPORTREGION 1
Some Data 1987234  17.04.2016
------------------------------------------------------------------------------------------------ _
Some Data 1987234  17.04.2014
Some Data 1987234  17.04.2015
Some Data 1987234  17.04.2016
Some Data 1987234  17.04.2017
Some Data 1987234  17.04.2018
Some Data 1987234  17.04.2019
Some Data 1987234  17.04.2020
Some Data 1987234  17.04.2021
Some Data 1987234  17.04.2022
Some Data 1987234  17.04.2023
------------------------------------------------------------------------------------------------ _
Some Data 1987234  17.04.2023
Some Data 1987234  17.04.2024
Some Data 1987234  17.04.2025
Some Data 1987234  17.04.2026
Some Data 1987234  17.04.2027
Some Data 1987234  17.04.2028
Some Data 1987234  17.04.2029
Some Data 1987234  17.04.2030
Some Data 1987234  17.04.2031
Some Data 1987234  17.04.2032
------------------------------------------------------------------------------------------------ _
Some Data 1987234  17.04.2032
Some Data 1987234  17.04.2033
Some Data 1987234  17.04.2034
Some Data 1987234  17.04.2035
Some Data 1987234  17.04.2036
Some Data 1987234  17.04.2037
Some Data 1987234  17.04.2038
Some Data 1987234  17.04.2039
Some Data 1987234  17.04.2040
Some Data 1987234  17.04.2041
------------------------------------------------------------------------------------------------ _
Some Data 1987234  17.04.2041
Some Data 1987234  17.04.2042
ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª _
ªªªªªªªªªªªªªªªªªªª'besagte Ordinalzeichen
EXPORTREGION 1
Some Data 1987234  17.04.2016
------------------------------------------------------------------------------------------------ _
Some Data 1987234  17.04.2014
Some Data 1987234  17.04.2015
Some Data 1987234  17.04.2016
Some Data 1987234  17.04.2017
Some Data 1987234  17.04.2018
Some Data 1987234  17.04.2019
Some Data 1987234  17.04.2020
Some Data 1987234  17.04.2021
Some Data 1987234  17.04.2022
Some Data 1987234  17.04.2023
------------------------------------------------------------------------------------------------ _
Some Data 1987234  17.04.2023
Some Data 1987234  17.04.2024
Some Data 1987234  17.04.2025
Some Data 1987234  17.04.2026
Some Data 1987234  17.04.2027
Some Data 1987234  17.04.2028
Some Data 1987234  17.04.2029
Some Data 1987234  17.04.2030
Some Data 1987234  17.04.2031
Some Data 1987234  17.04.2032
------------------------------------------------------------------------------------------------ _
Some Data 1987234  17.04.2032
Some Data 1987234  17.04.2033
Some Data 1987234  17.04.2034
Some Data 1987234  17.04.2035
Some Data 1987234  17.04.2036
Some Data 1987234  17.04.2037
Some Data 1987234  17.04.2038
Some Data 1987234  17.04.2039
Some Data 1987234  17.04.2040
Some Data 1987234  17.04.2041
------------------------------------------------------------------------------------------------ _
Some Data 1987234  17.04.2041
Some Data 1987234  17.04.2042
ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª _
ªªªªªªªªªªªªªªªªªªª 'besagte Ordinalzeichen
EXPORTREGION 2
Some Data 1987234  17.04.2016
------------------------------------------------------------------------------------------------ _
Some Data 1987234  17.04.2014
Some Data 1987234  17.04.2015
Some Data 1987234  17.04.2016
Some Data 1987234  17.04.2017
Some Data 1987234  17.04.2018
Some Data 1987234  17.04.2019
Some Data 1987234  17.04.2020
Some Data 1987234  17.04.2021
Some Data 1987234  17.04.2022
Some Data 1987234  17.04.2023
------------------------------------------------------------------------------------------------ _
Some Data 1987234  17.04.2023
Some Data 1987234  17.04.2024
Some Data 1987234  17.04.2025
Some Data 1987234  17.04.2026
Some Data 1987234  17.04.2027
Some Data 1987234  17.04.2028
Some Data 1987234  17.04.2029
Some Data 1987234  17.04.2030
Some Data 1987234  17.04.2031
Some Data 1987234  17.04.2032
------------------------------------------------------------------------------------------------ _
Some Data 1987234  17.04.2032
Some Data 1987234  17.04.2033
Some Data 1987234  17.04.2034
Some Data 1987234  17.04.2035
Some Data 1987234  17.04.2036
Some Data 1987234  17.04.2037
Some Data 1987234  17.04.2038
Some Data 1987234  17.04.2039
Some Data 1987234  17.04.2040
Some Data 1987234  17.04.2041
------------------------------------------------------------------------------------------------ _
Some Data 1987234  17.04.2041
Some Data 1987234  17.04.2042
ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª'besagte Ordinalzeichen

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

Betreff
Datum
Anwender
Anzeige
AW: Skript überspringt Zeilen mit Sonderzeichen...
24.04.2014 15:59:33
Arthur
Hallo Jonas.
Die Frage ist etwas kryptisch. Vielleicht hilft aber ein Tipp: Das manuelle ausführen von "Cells(Rows.Count, 1).End(xlUp).Row" führt bspw. auch dazu, dass der Cursor in einer leeren Zelle hängen bleibt. Versuche es mal mit:
ThisWorkbook.Worksheets("Verarbeitung").UsedRange.Rows.Count
Gruß, Arthur

AW: Skript überspringt Zeilen mit Sonderzeichen...
25.04.2014 10:51:25
Jonas
ATTENTION: WALL OF TEXT APPROACHING ^^
Hallo Arthur,
vielen Dank für Deinen Input und entschuldige bitte, dass die Frage etwas kompliziert gestellt ist. Leider hat dein Vorschlag nicht geholfen. Der resultierende Output ist der selbe.
Ich versuche das Problem noch einmal zu beschreiben.
1. Das Skript liest eine .txt Datei ein. Diese hat idR ca 8000 Zeilen. Diese Zeilen sind Datensätze, die verschiedenen Exportregionen zugeordnet werden sollen. Ein Datensatz hat mehrere Zeilen. Das Ende eines Datensatzes wird durch eine Zeile mit weiblichen ordinalzeichen gekennzeichnet (diese Zeilen sehen so aus: "ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª"), mehr dazu gleich. Das Skript nimmt jede Zeile aus der .txt und fügt sie in Spalte A des Blattes "Verarbeitung" ein. Hier klappt alles wunderbar. Alle Zeilen aus der .txt werden in das Workbook übernommen.
2. Nun geht das Skript Zelle für Zelle der Spalte A des Blattes "Verarbeitung" durch und schaut, ob die Zelle entweder das Wort "EXPORTREGION 1", "EXPORTREGION 2" oder "EXPORTREGION 3" enthält. Dies Signalisiert, dass ein neuer Datensatz beginnt. Wenn eine Zelle mit einem solchen Wort gefunden wird, wird diese und die folgenden Zellen kopiert und in ein separates Worksheet (eines für Exportregion 1 eines für Exportregion 2 usw.) eingefügt. Dies macht das Skript so lange, bis wieder eines der Wörter gefunden oder das Ende der eingelesenen Datei erreicht wird.
Auch dies funktioniert prinzipiell wie gewünscht. Alle Datensätze werden einem von drei Worksheets (nach Exportregionen unterschieden) zugeordnet. Kein Datensatz wird übersehen und keiner wird doppelt kopiert.
Nun ist es aber so, dass die einzelnen Datensaätze durch eine Zeile mit besagten weiblichen ordinalzeichen getrennt werden, d.h. ein Datensatz geht bspw. bis Zelle A5, dann kommen in Zelle A6 diese Zeichen und in Zelle A7 beginnt der nächste Datensatz. Was nun nicht funktioniert ist, die Zelle A6 ebenfalls mit zu kopieren und die Datensätze weiterhin durch diese Zeile voneinander zu trennen. Sie werden vom Skript einfach "übersehen" und fehlen nach dem kopieren.
Nun wäre es naheliegend zu vermuten, dass Excel (oder das Skript) diese Zeichen einfach nicht verarbeiten kann. Dies war auch meine erste Vermutung. Wenn ich aber nach dem Durchlauf des Skripts an die Enden der einzelnen Worksheets (ein WS je Exportregion) scrolle sehe ich, dass das Skript diese Zeile beim jeweils letzten Datensatz mitkopiert hat. Dieses inkonsistente Verhalten ist es was mich völlig überfordert.
Ich hoffe diese Wand aus Text war besser zu verstehen.
Für jegliche weitere Hilfe bin ich mehr als dankbar.
Viele Grüße
Jonas
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige