Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1236to1240
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

TXT-Import - Währung erhalten

TXT-Import - Währung erhalten
HansP
Hallo! Ich muss eine TXT-Datei nach Excel importieren. Dabei ist in der TXT-Datei unter anderem der Preis hinterlegt. Wie kann ich bei dem Import über VBA einstellen, das alle Felder im TXT-File als "Text" importiert werden, damit die Preise nicht zerschossen werden.
Weiterhin müsste ich in der Spalte D in allen Zellen die letzten 20 Zeichen löschen.
Frage 3: Einige Felder enthalten am Ende einen String mit 12 alphanummerischen Zeichen nach dem Muster AA-BBBB-CCCC. Wie kann ich danach sinnvoll suchen und dann löschen?
Mal als Pseudo-Code:

If 5tes Zeichen = "-"
and 10tes Zeichen ="-"
then delete 12 Zeichen

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: TXT-Import - Währung erhalten
03.11.2011 09:29:23
RALF
Moin,
irgendwie stelle ich mich mit der Markierung von Formeln zu doof an....drum siehts wie ein Zitat aus :O)
1. Import: nutze doch mal den Makrorecorder unter Extras - Makro - aufzeichnen. Beim Import  _
kann man ja jeder Spalte ein anderes (oder immer das gleiche Textformat) zuweisen
2. entweder über eine Hilofsspalte --> Spalte dahinter und eine Formel rein
=Teil(D1;1;Länge(D1)-20))
oder (wenn in der ersten Zeile begonnen wird)
For i = 1 to Range("D65000").end(xlup).row
Range("D" & i) = Mid(Range("D" & i), 1, Len(Range("D" & i)) - 20)
Next i
3.
IF Mid(zelle, 5, 1) = "-" and Mid(zelle, 10, 1) = "-" then
zelle = Mid(zelle, 1, Len(zelle) - 12) 'oder was auch immer Du löschen willst ... das habe  _
ich nicht verstanden
End IF 

Gruß
RALF
Anzeige
AW: TXT-Import - Währung erhalten
03.11.2011 13:24:22
HansP
Hallo Ralf, bis Punkt 3 komme ich klar. Vielen Dank dafür!!
Bei 3 habe ich folgenden Zelleninhalt in Spalte B

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt  _
ut labore et dolore magna aliquyam. 1AL-B2C0-D211

Nun muss ich das "1AL-B2C0-D211" rauslöschen. Allerdings steht das nicht in jeder Zelle in B. Wie muss ich die If-Schleife anpassen, das die letzten 12 Zeichen abgefragt werden?
AW: Was läuft falsch?
04.11.2011 00:49:32
HansP
Habe das jetzt wie folgt angepasst:

Dim i As Integer
For i = 1 To Range("D65000").End(xlUp).Row
Range("E" & i) = Mid(Range("E" & i), 1, Len(Range("E" & i)) - 28)
If Mid(Range("E" & i), 5, 1) = "-" And Mid(Range("E" & i), 10, 1) = "-" Then
Range("E" & i) = Mid(Range("E" & i), 1, Len(Range("E" & i)) - 12)
End If
Next i

Der erste Teil läuft sauber durch. Bei der If-Schleife passiert gar nichts. Habe sogar die Werte wegen des Leerzeichens am Zellenende um 1 erhöht - Null Reaktion. Was mache ich falsch?
Anzeige
AW: Was läuft falsch?
04.11.2011 08:34:01
hary
moin Hans
versuch mal dies.

Dim i As Long
For i = 1 To Range("E65000").End(xlUp).Row
If InStr(1, Right(Cells(i, 5), 5), "-") And InStr(1, Right(Cells(i, 5), 10), "-") Then
Cells(i, 5) = Left(Cells(1, 5), Len(Cells(1, 5)) - 14)
End If
Next

gruss hary
AW: Was läuft falsch?
04.11.2011 13:37:35
HansP
Hallo Harry, vielen Dank, aber das funktioniert auch nicht. Die Abfrage löscht die letzten 12 bzw. 14 Zeichen nicht. Sofern natürlich das Kriterium AA-BBBB-CCCC gefunden wird...
AW: Was läuft falsch?
04.11.2011 14:31:56
hary
hallo Hans
Hallo ist das auch die richtige Spalte? Mal schreibst Du Inhalt in SpalteB, dann nimmst Du den Maximalwert fuer die Schleife aus SpalteD und willst in SpalteE die Aenderung haben.
Lad mal eine Bsp.Mappe hoch mit zwei Zellen in denen Dein Text steht. Aber die orignal Spalte!!!!!
gruss hary
Anzeige
AW: Was läuft falsch?
04.11.2011 15:59:51
HansP
Ok, hier erst nochmal das nicht laufende Makro:

Dim i As Integer
For i = 1 To Range("E65000").End(xlUp).Row
Range("E" & i) = Mid(Range("E" & i), 1, Len(Range("E" & i)) - 28)
If InStr(1, Right(Cells(i, 5), 5), "-") And InStr(1, Right(Cells(i, 5), 10), "-") Then
Cells(i, 5) = Left(Cells(1, 5), Len(Cells(1, 5)) - 14)
End If
Next i

Spalte ist und bleibt: E
Text1
Langenscheidt KG, Berlin und München, 2007. Gebunden Opbd. mit illsutriertem Einband wie abgebildet. Kleinformat. Nur angelesenes und gut erhaltenes Exemplar mit nur leichten Lagerungsspuren am Einband (Ecken teils leicht bestoßen, Oberfläche minimal lagerspurig), Schnitt hel und frisch, innen sauber und gepflegt. Versand in Luftpolsterumschlag innerhalb von zwei Werktagen ab München. CI-NF38-MH9T Every shipment with invoice.
Text2
Droemersche Verlagsanstalt Th. Knaur Nachf., München, 1999. Taschenbuch. Einmal pfleglich gelesenes und sehr gut erhaltenes Exemplar mit nur leichten Lese- und Gebrauchsspuren am Einband (Kanten teils leicht berieben, Ecken teils minimal bestoßen), Schnitt etwas nachgedunkelt, innen sauber und gepflegt. Versand in Luftpolsterumschlag innerhalb von zwei Werktagen ab München. H1-RN0L-OLDL Every shipment with invoice.
Den Part mit "Every shipment with invoice." schneidet mir das Makro sauber raus. Wobei ich am Ende der Zelle dann ein Leerzeichen habe.
Anzeige
AW: Was läuft falsch?
05.11.2011 06:33:04
hary
Hallo hans
Falsch gelaufen ist das kopieren von meinem Code. :-( habe aus meinem Testcode in der letzten Zeile die 1 nicht in i geaendert.
mach's so.

Dim i As Integer
For i = 1 To Range("E65000").End(xlUp).Row
Cells(i, 5) = Left(Cells(i, 5), Len(Cells(i, 5)) - 29)
If InStr(1, Right(Cells(i, 5), 5), "-") And InStr(1, Right(Cells(i, 5), 10), "-") Then
Cells(i, 5) = Left(Cells(i, 5), Len(Cells(i, 5)) - 13)
End If
Next i
gruss hary
AW: Was läuft falsch?
05.11.2011 18:25:33
HansP
Danke!
So läufts prima! Ich musste nur die 29 auf 28 anpassen - und die entsprechenden Änderungen die daraus resultieren. Aus irgendeinem Grund will mein Excel nicht 29 Zeichen löschen. Lösche ich nur 28 und im nächsten Schritt dafür 14 statt 13 ist alles in Ordnung.
Nochmals vielen Dank bei der schweren Geburt!
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige