Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1060to1064
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

Daten in Textzelle einfügen

Daten in Textzelle einfügen
19.03.2009 15:24:11
Stefan
Hallo liebes Forum,
ich habe folgendes Problem: in eine Textdatei (*.txt) soll nach einem S-Verweis Abgleich mit einer Excel-Datei an einer bestimmten Stelle der entsprechenden Zeilen noch Text eingefügt werden, bzw. die die Stellen überschrieben werden.
Konkret: Die Textdatei enthält persönliche Angaben zu Leuten jeweils in zwei Satzarten aufgeteilt (10 und 20).
Bsp.:
10PNR text_leer_ text _leer_ text XX texttext
20texttexttext
10PNR text_leer_ text _leer_ text XX texttext
20texttexttext
10PNR text_leer_ text _leer_ text XX texttext
20texttexttext
usw.
An der Stelle XX soll z.B. ein Auslandszeichen (DE, IT,...) eingefügt werden. Dieses Auslandskennzeichen für die jeweilige Pers.nr. (PNR) habe ich in einer Extradatei (Excel).
Über Filter (beginne mit 10) und einem S-Verweis, kann ich die Auslandskennzeichen der zugehörigen Zeile 10 zuordnen, so dass das Kennzeichen dann in Excel neben dem vorher importierten Text in Spalte C steht. In Spalte B steht die PNR, die ich über die Formel =Teil(...) ausgelesen habe.
A....................................................................................B..................C
10PNR text_leer_ text _leer_ text XX texttext...........PNR..............DE
20texttexttext
10PNR text_leer_ text _leer_ text XX texttext...........PNR...............IT
20texttexttext
10PNR text_leer_ text _leer_ text XX texttext...........PNR...............DE
20texttexttext
usw.
Nun meine Frage: wie bekomme ich das Auslandskennzeichen an die mit XX gekennzeichnete Stelle in Spalte A. Der Text (in diesem Fall Leerzeichen) soll in den 10er Zeilen überschrieben werden.
So soll es dann aussehen:
10PNR text_leer_ text _leer_ text DE texttext
20texttexttext
10PNR text_leer_ text _leer_ text IT texttext
20texttexttext
10PNR text_leer_ text _leer_ text DE texttext
20texttexttext
usw.
Ich hoffe ich konnte mein Problem einigermaßen rüberbringen. Falls jemand noch eine Idee, wie ich das Ganze einfacher lösen kann, würde ich meine umständliche Methode glatt vergessen.
Danke schonmal für´s durchlesen meines Romans.
Stefan

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten in Textzelle einfügen
19.03.2009 21:17:54
fcs
Hallo Stefan,
wenn das Auslandskennzeichen immer an der gleichen Zeichen-Position eingefügt werden sollen, dann geht folgendes:

=WENN(LINKS(A1;2)="10";LINKS(A1;34) & C1 & TEIL(A1;34+LÄNGE(C1)+1;300);A1)


Gruß
Franz

AW: Daten in Textzelle einfügen
23.03.2009 16:31:15
Stefan
Hallo Franz,
vielen Dank für deinen Lösungsansatz. Es funktioniert soweit auch ganz gut. Gibt es denn nicht auch die Möglichkeit, die schon vorhandene Textdatei über einen Code mit einer Exceldatei, in der alle Personalnummern mit dazugehörigem Länderkennzeichen stehen, zu vergleichen und in die 10er Zeilen der Textdatei bei übereinstimmender Personalnummer an einer bestimmten Stelle (z.B. 35) das Länderkennzeichen einzufügen?
Gruß und danke
Stefan
Anzeige
AW: Daten in Textzelle einfügen
23.03.2009 18:25:06
fcs
Hallo Stefan,
man kann die Ländercode auch per VBA direkt ersetzen. Dazu wird temporär eine Ergebnisdatei angelegt mit dem Ergebnistext.
Den Namen der Tabelle mit den PNR und zugehörigen Ländercodes muss du noch anpassen. Ebenso ggf. die Spalte wo nach der PNR gesucht werden soll und die Spalte in der der Ländercode steht.
Gruß
Franz

Sub LandCode_Einfuegen()
Dim varTxtDatei As Variant, varTmpDatei As Variant
Dim varPNR, strCode As String, strText As String
Dim FF1 As Long, FF2 As Long
Dim wksPNR_Land As Worksheet, rngZelle As Range
Set wksPNR_Land = ActiveWorkbook.Worksheets("PNR_Code") 'anpassen!!!
varTxtDatei = Application.GetOpenFilename(Filefilter:="Text(*.txt),*.txt", _
Title:="Bitte Textdatei auswählen und öffnen")
If varTxtDatei  False Then
'Textdatei zum Einlesen öffnen
FF1 = FreeFile()
Open varTxtDatei For Input As #FF1
'Name Temporäre Zieldatei
varTmpDatei = VBA.CurDir & Application.PathSeparator & "XYZ_temp.txt"
FF2 = FreeFile()
Open varTmpDatei For Output As #FF2
Do Until EOF(FF1)
'Zeile aus Textdatei einlesen
Line Input #FF1, strText
If Left(strText, 2) = "10" Then
'Personalnummer aus Zeilentext ermitteln, Startposition und Länge ggf. anpassen
varPNR = Mid(strText, 3, 3)
'PNR in Codeliste suchen in Spalte A der Tabelle
Set rngZelle = wksPNR_Land.Columns.Find(what:=varPNR, LookIn:=xlValues, lookat:=xlWhole) _
If Not rngZelle Is Nothing Then
'Ländercode aus Spalte B (Spaltenoffset = 1) im Text ersetzen ab position 35
strText = Left(strText, 34) & rngZelle.Offset(0, 1).Text & Mid(strText, 34 + _
Len(rngZelle.Offset(0, 1).Text) + 1)
End If
End If
'Ergebnis in temporäre Datei schreiben
Print #FF2, strText
Loop
'Datenkanäle wieder schließen
Close #FF1
Close #FF2
'per kopieren Original-Textdatei durch temporäre Ergebnis-Datei ersetzen
VBA.FileCopy varTmpDatei, varTxtDatei
'Temporäre datei wieder löschen
VBA.Kill varTmpDatei
End If
End Sub


Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige