Daten Namen zuordnen

Hallo
Ich ein kleines großes Problem und zwar hab ich 3 Dateien eine excel, eine text und eine .csv. Die Exceldatei ist die spätere Enddatei, die Text liefert die Daten und in der csv muss ich nur was suchen bzw vergleichen. Und da das ziemlich oft gemacht werden muss, wär ein Makro ideal was einfach dadurch läuft.

HE6009 31 3384 3149 2962 184 4 26 37 72 42 20 22 57 114 151
HE6009 93,1 87,5 5,4 0,1 0,8 1,1 2,1 1,3 0,6 0,7 1,7 3,4 4,5

HE6101 31 8604 7779 7109 652 18 59 24 291 427 159 267 24 718 742
HE6101 90,4 82,6 7,6 0,2 0,7 0,3 3,4 5,0 1,9 3,1 0,3 8,3 8,6

So sieht ein Teil der Textdatei aus und ich brauche 3384, 20 und 151, die zweite Zeile ist unwichtig und das gleiche dann mit der nächsten 8604,159,742 usw.

So sieht die csv datei aus bzw ein kleiner Ausschnitt.
6009 4322 6 Butzbach
6010 5817 6 Miquelallee
6101 5017 6 Wallau 1
6102 5721 6 Wächtersbach
6103 6013 6 Rüdesheim

Hier muss ich die 6009 aus der Textdatei mit der 6009 aus der csv datei vergleichen weil ich den Namen brauche für die Exceldatei um die Daten zuordnen zu können.

Hier ein Ausschnitt aus der Enddatei

15525 15154 14717 14649 14332 14050 14309 13634 13559 13370 12610
B3 Butzbach 774 856 767 747 720 594 787 632 640 636 538
314 394 321 303 317 215 392 258 247 280 251

In der Excel müssen dann die Daten aus der Textdatei dem richtigen Namen zugeordnet werden und die Werte müssen dann in die Spalte O so geschrieben werden

3384
151
20

Kann mir einer dabei helfen, wär demjenigen ziemlich dankbar. Bei Fragen/Unklarheiten einfach fragen

Hab die Dateien auch mal hochgeladen, vielleicht hilft es ja einem

http://rapidshare.com/files/341417019/Desktop.zip.html
oder
http://uploaded.to/file/8zc8tr

Kann mir einer dabei helfen, wär demjenigen ziemlich dankbar.
Bei Fragen/Unklarheiten einfach fragen

Hallo Tobi,

was sollen die Klammern in der txt und die Mist leerzeichen nach den Ortsnamen in der csv?

Ganz kapiert hab ichs nicht, Code geht sicher auch einfacher:

in Modul1 der xls:

Option Explicit

Sub TxtEinlesen()
Dim Satz As String, S() As String, Zei, Ort
Dim wksX As Worksheet, wksC As Worksheet, Such
Set wksX = ThisWorkbook.Worksheets("Verkehrsbelastung")
Workbooks.Open "c:\test\kwdesktop\ZV\_HE\_2010.csv"
Set wksC = ActiveWorkbook.Worksheets("ZV\_HE\_2010")
With wksC
 Close
 Open "c:\test\kwdesktop\FZA\_Mo-So\_1001.txt" For Input As #1
 While Not EOF(1)
 Line Input #1, Satz
 If Left(Satz, 1) = "H" Then
 While InStr(Satz, " ")
 Satz = Replace(Satz, " ", " ")
 Wend
 S = Split(Satz)
 Such = Replace(S(0), "HE", "")
 If UBound(S) \> 2 Then
 Line Input #1, Satz ' Dummyeinlesung
 If Application.CountIf(.Columns(1), Such) Then
 Ort = Application.VLookup(CInt(Such), .Range("A:smiley:"), 4, 0)
 If Application.CountIf(wksX.Columns(2), Ort) Then
 Zei = Application.Match(Ort, wksX.Columns(2), 0)
 wksX.Cells(Zei - 1, 15) = S(2)
 wksX.Cells(Zei, 15) = S(10)
 wksX.Cells(Zei + 1, 15) = S(15)
 End If
 End If
 End If
 End If
 Wend
 Close
 Workbooks(wksC.Parent.Name).Close
End With
End Sub

Gruß
Reinhard

Die klammen kann man vernachlässigen. Welche leerzeichen?

Die klammen kann man vernachlässigen. Welche leerzeichen?

Hallo Mr,

in der csv sind wenn man sie in Excel öffnet in Spalte D etliche Leerzeichen hinter den Ortsnamen.

Gruß
Reinhard

aso die sind auch nicht wichtig…die namen brauch ich ja auch nur zur zuordnung

aso die sind auch nicht wichtig…die namen brauch ich ja auch
nur zur zuordnung

Hallo Mr,

die Leerzeichen machen Ärger, verkompliziern den Code. ist immer mit ihnen zu rechnen?

Was ist eigentlich mit meinem Code, getestet? Und?

Gruß
Reinhard

also ab spalte eh kommen eigentlich nur ein paar sachen…kann morgen die ganzen datei mal hochladen wenn es hilft.

getesten hab ich noch nicht…werd ich auch erst morgen früh machen können. aber schonmal danke für deine bemühungen

Die csv Datei kann man abändern wie man will. Nur bei der Textdatei gibt es immer eine neue, die aber immer das gleiche Schema hat.

Hier hab ich unbearbeitete csv und noch eine abgeänderte Version davon hochgeladen.
http://rapidshare.com/files/341735887/Desktop.zip.html

Hab das Problem grad getest nur leider macht das irgendwie gar nicht. es läuft ohne Fehlermeldung durch. Hab das es Makro in die Exceldatei eingefügt und laufen lassen, aber es passiert nichts.

ich versuch das Problem nochmal was genauer zu beschreiben. Also ich brauch aus der Textdatei die dritte Zahl (3384), die 12te(20) und die 16te(151). Die zweite Zahlrenreihe ist unwichtig, dann kommt ja die Leerzeile und dann brauch aus der vierten Reihe auch wieder die Zahlen von den jeweilgen Stellen 8604, 159,742 und dann immer so weiter.

Diese Zahlen muss ich dann in die Exceltabelle einfügen (in die Spalte O) wobei die zweite und dritte Zahl getauscht werden müssen. Und die Zahlen müssen untereinander stehen
3384
151
20

In der Textdatei hab ich vorne die Zahl 6009 stehen und in der Exceltabelle nur Name. Um die richtige zuordnung zuschaffen hab ich noch eine csv datei wo die Zahlen 6009,6101 usw und mit den zugehörigen namen stehen,

Hier die csv bzw jetzt in Exceldatei ohne die lästigen Leerzeichen
http://rapidshare.com/files/341755029/ZV_HE_2010_neu…

Hallo Mr,

Die csv Datei kann man abändern wie man will.

nein, die Spaltenstruktur muß erhalten bleiben.

http://rapidshare.com/files/341735887/Desktop.zip.html

Hab das Problem grad getest nur leider macht das irgendwie gar
nicht. es läuft ohne Fehlermeldung durch. Hab das es Makro in
die Exceldatei eingefügt und laufen lassen, aber es passiert
nichts.

Das liegt an den angehängten Leerzeichen. Nachstehender Code klappt in/mit den drei dateien die du zu Anfang schicktest.

Gruß
Reinhard

Sub TxtEinlesen()
Dim Satz As String, S() As String, Zei, Ort
Dim wksX As Worksheet, wksC As Worksheet, Such
Set wksX = ThisWorkbook.Worksheets("Verkehrsbelastung")
Workbooks.Open "c:\test\kwdesktop\ZV\_HE\_2010.csv"
Set wksC = ActiveWorkbook.Worksheets("ZV\_HE\_2010")
With wksC
 Close
 Open "c:\test\kwdesktop\FZA\_Mo-So\_1001.txt" For Input As #1
 While Not EOF(1)
 Line Input #1, Satz
 If Left(Satz, 1) = "H" Then
 While InStr(Satz, " ")
 Satz = Replace(Satz, " ", " ")
 Wend
 Satz = Replace(Satz, "(", "")
 Satz = Replace(Satz, ")", "")
 S = Split(Satz)
 Such = Replace(S(0), "HE", "")
 If UBound(S) \> 2 Then
 Line Input #1, Satz ' Dummyeinlesung
 If Application.CountIf(.Columns(1), Such) Then
 Ort = Application.Trim(Application.VLookup(CInt(Such), .Range("A:smiley:"), 4, 0))
 If Application.CountIf(wksX.Columns(2), Ort) Then
 Zei = Application.Match(Ort, wksX.Columns(2), 0)
 wksX.Cells(Zei - 1, 15) = S(2)
 wksX.Cells(Zei, 15) = S(15)
 wksX.Cells(Zei + 1, 15) = S(11)
 End If
 End If
 End If
 End If
 Wend
 Close
 Workbooks(wksC.Parent.Name).Close
End With
End Sub

Besten Dank