Anzeige
Archiv - Navigation
1016to1020
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

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

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
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

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige