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

Forumthread: Erweiterung eines Makros wg. Einlesen von Daten

Erweiterung eines Makros wg. Einlesen von Daten
14.10.2008 08:20:04
Daten
Guten Morgen, kann man das Makro

Sub tt()
Dim Zei As Long, Werte, W As Integer, Spa As Long
For Zei = 30 To Range("A" & Rows.Count).End(xlUp).Row
If InStr(Cells(Zei, 1), Chr(124)) > 0 Then
Werte = Split(Cells(Zei, 1), Chr(124))
For W = LBound(Werte) To UBound(Werte)
If Len(Werte(W)) > 0 Then
Spa = Spa + 1
Cells(Zei, Spa) = Trim(Werte(W))
End If
Next W
Spa = 0
End If
Next Zei
End Sub


so erweitern, das er eine Zeile mit ------ (z.B. mehr als 15 '-' Zeichen in einer Zeile) löscht ?
Dieses Makro teilt mir einen in Excel einkopierten Text in einzelne Spalten auf
Bsp. Daten:


case id|| i02 | 025 | 045 | 044 | nu || _A | _B | _E | _D | _C | _G | _F | _L | _M | _J | _K |  _
i01 | i02 | i13 || remarks/comment
------------------------------------------------------------------------------------------------ _
1 || 000 | F | T | F | - || F | T | F | F | F | T | T | T | T | F | T | 000 | T | F ||


Dürfte ja nur ne suchschleife nach dem '-' seien, und wenn dieses Zeichen mehr als 15 mal hintereinander auftaucht, dann lösche die Zeile ?
gruß Eddie

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Erweiterung eines Makros wg. Einlesen von Daten
14.10.2008 09:08:58
Daten
Jetzt mal ohne Eingabe der Anzahl:

Sub tt()
Dim Zei As Long, Werte, W As Integer, Spa As Long
' For-Schleife von hinten nach vorne,
' da sich sonst noch abzuarbeitende Zeilennummern verändern
For Zei = Range("A" & Rows.Count).End(xlUp).Row To 30 Step -1
If InStr(Cells(Zei, 1), Chr(124)) > 0 Then
' Splittet mit 16 "-" als Trennzeichen auf
' Wenn aufsplitten gelingt, dann waren 16 aufeinanderfolgende "-" vorhanden
If UBound(Split(Cells(Zei, 1), "----------------")) > 0 Then
Rows(Zei).Delete
End If
Werte = Split(Cells(Zei, 1), Chr(124))
For W = LBound(Werte) To UBound(Werte)
If Len(Werte(W)) > 0 Then
Spa = Spa + 1
Cells(Zei, Spa) = Trim(Werte(W))
End If
Next W
Spa = 0
End If
Next Zei
End Sub


Gruss, Jogy

Anzeige
AW: Erweiterung eines Makros wg. Einlesen von Daten
14.10.2008 10:04:24
Daten
Hat so nicht funktioniert... ist immer das Problem, wenn man Code ungetestet herausgibt

Sub tt()
Dim Zei As Long, Werte, W As Integer, Spa As Long
' For-Schleife von hinten nach vorne,
' da sich sonst noch abzuarbeitende Zeilennummern verändern
For Zei = Range("A" & Rows.Count).End(xlUp).Row To 1 Step -1
' Splittet mit 16 "-" als Trennzeichen auf
' Wenn aufsplitten gelingt, dann waren 16 aufeinanderfolgende "-" vorhanden
If UBound(Split(Cells(Zei, 1), "----------------")) > 0 Then
Rows(Zei).Delete
ElseIf InStr(Cells(Zei, 1), Chr(124)) > 0 Then
Werte = Split(Cells(Zei, 1), Chr(124))
For W = LBound(Werte) To UBound(Werte)
If Len(Werte(W)) > 0 Then
Spa = Spa + 1
Cells(Zei, Spa) = Trim(Werte(W))
End If
Next W
Spa = 0
End If
Next Zei
End Sub


Gruss, Jogy

Anzeige
Danke Jogy
14.10.2008 13:14:05
Eddie
Hat alles geklappt
gruß Eddie
@ Jogy ... doch noch etwas gefunden
14.10.2008 13:20:00
Eddie
Hallo Jogy
Ich habe noch etwas ... und zwar war in meiner Version von den Spalten Teilen die Fkt. drin, das alle Zellen die Text-Formatierung haben .. weil ich auch Daten habe wie 01 oder 000
vielleicht kannst du das noch mit einbauen ?
gruß Eddie
Anzeige
AW: @ Jogy ... doch noch etwas gefunden
14.10.2008 13:28:24
JogyB

Sub tt()
Dim Zei As Long, Werte, W As Integer, Spa As Long
' For-Schleife von hinten nach vorne,
' da sich sonst noch abzuarbeitende Zeilennummern verändern
For Zei = Range("A" & Rows.Count).End(xlUp).Row To 1 Step -1
' Splittet mit 16 "-" als Trennzeichen auf
' Wenn aufsplitten gelingt, dann waren 16 aufeinanderfolgende "-" vorhanden
If UBound(Split(Cells(Zei, 1), "----------------")) > 0 Then
Rows(Zei).Delete
ElseIf InStr(Cells(Zei, 1), Chr(124)) > 0 Then
Werte = Split(Cells(Zei, 1), Chr(124))
For W = LBound(Werte) To UBound(Werte)
If Len(Werte(W)) > 0 Then
Spa = Spa + 1
Cells(Zei, Spa).NumberFormat = "@"
Cells(Zei, Spa) = Trim(Werte(W))
End If
Next W
Spa = 0
End If
Next Zei
End Sub


Sollte das Gewünschte erledigen.
Gruss, Jogy

Anzeige
AW: Erweiterung eines Makros wg. Einlesen von Daten
14.10.2008 09:14:56
Daten
Hallo,

If InStr(Cells(Zei, 1), Chr(124)) > 0 And Instr(Cells(Zei, 1), String(15, "-")) = 0 Then


Gruß
Rudi

klappt leider noch nicht...
14.10.2008 09:36:58
Eddie
irgendwie funkt. das nicht ... es wird NICHT die Zeile, die 15 oder mehr '-' Zeichen hat gelöscht ... sie bleibt immer noch drin stehen nach dem aufsplitten
Das Problem kann sein, das die 15 '-' Zeichen ja alle in einer Zelle stehen *grübel*
habe nur

If InStr(Cells(Zei, 1), Chr(124)) > 0 Then

mit deiner Ausgetauscht
gruß Eddie

Anzeige
AW: Erweiterung eines Makros wg. Einlesen von Daten
14.10.2008 09:16:31
Daten
Hi Eddie,
ungetester Gedanke:
Erweitere doch If InStr(Cells(Zei, 1), Chr(124)) > 0 Then durch If InStr(Cells(Zei, 1), Chr(124)) > 0 and InStr(Cells(Zei, 1), "-") < 15 Then
Dann dürften die Zeilen mit 15 oder mehr "-" nicht eingelesen werden (?)
Gruß
erwin
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

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