lea1987
Goto Top

Daten aus Excel-Matrix herauslesen

Guten Tag, ich bin Lea und neue hier im Forum, ich hoffe ihr könnt mir etwas weiterhelfen. ;)

Ich habe eine Excel Matrix, die in den ersten zwei Zeilen etwa so aufgebaut ist.

Land (insgesamt: 22 Länder): Deutschland, Schweiz, Österreich
Stadt (insgesamt 272 Städte): Bremen, Hamburg, Zürich, Genf, Wien, Graz, Linz

eindeutig zugeordnet ist dies immer. beispielsweise C1 Deutschland, C2 Hamburg; F1 England, F2 London

In den Spalten habe ich von A3 an eine fortlaufende Nummerierung (1-213) und von B3 an 216 Personennamen.

Jetzt habe ich in der Tabelle die Verbindungen mit Zahlen hinterlegt.
Beispiele

A4 : 2; B4: lea1987 - C1 Deutschland, C2 Hamburg und die Verbindung ist C4: Heimatort
A4 : 2; B4: lea1987 - D1 Deutschland, D2 Bremen und die Verbindung ist D4: LEER
A10: 8;B10: Max Mustermann - C1 Deutschland, C2 Hamburg und die Verbindung ist C10: Wohnort

für die Verbindungen gibt es 5 Optionen: Heimatort, Wohnort, Studienort, Ruhestand und ein leeres Feld.

fc29f612e3f9d7d81d9e823e65eae8a5


Nun möchte ich diese Daten so herauslesen, dass ich sie in eine Datenbank importieren kann. Sie sollen in diese definierten Felder

A1: ID; B1: NAME; C1: LAND; D1: STADT E1: VERBINDUNG

Am Ende dürfte ich 800 Zeilen haben, da ich 800 Verbindungen habe.

f571e2052b04e0aa52ae4e9dde1fe3a9

So, das war mein Problem geschildert. ;) Nun meine Frage: Kann ich das irgendwie programmieren, dass sich das automatisch herauszieht und ich nicht alles einzeln eingeben muss? Das würde nämlich Tage dauern bei den 800 Verbindungen. face-sad((
Ich bin nicht so gut, was Makros oder VisualBasic angeht, bringe es mir aber gerne bei, wenn ich mal n Anfang hab.
Es wär total super, wenn mir jemand hier weiterhelfen könnte.

Tausend Danke euch schon Mal
Die LEA

Content-Key: 135812

Url: https://administrator.de/contentid/135812

Ausgedruckt am: 28.03.2024 um 11:03 Uhr

Mitglied: bastla
bastla 12.02.2010 um 17:03:34 Uhr
Goto Top
Hallo lea1987!

Das sollte sich mit folgendem VBA-Script lösen lassen:
Sub MakeList()
TQuelle = "Quelle" 'Name Quelltabelle  
ZQuelle = 3 'Erste Zeile für Daten der Verbindungen  
SQuelle = 3 'Nummer der ersten Spalte für Daten der Verbindungen  

TZiel = "Ziel" 'Name Zieltabelle  
ZZiel = 2 'Erste Zeile für Datensätze  
SZiel = 1 'Nummer der ersten Spalte für Datensätze  

ZZ = ZZiel
ZQ = ZQuelle
MaxS = SQuelle

With Worksheets(TQuelle)

    'Letzte Spalte mit Daten ermitteln  
    Do While .Cells(ZQuelle - 2, MaxS + 1) <> ""  
        MaxS = MaxS + 1
    Loop

    Do While .Cells(ZQ, SQuelle - 2) <> "" 'alle Zeilen mit einer ID durchgehen  
        For i = SQuelle To MaxS 'alle infrage kommenden Spalten prüfen  
            If .Cells(ZQ, i) <> "" Then  
                Worksheets(TZiel).Cells(ZZ, SZiel) = .Cells(ZQ, SQuelle - 2) 'Eintrag ID  
                Worksheets(TZiel).Cells(ZZ, SZiel + 1) = .Cells(ZQ, SQuelle - 1) 'Eintrag Name  
                Worksheets(TZiel).Cells(ZZ, SZiel + 2) = .Cells(ZQuelle - 2, i) 'Eintrag Land  
                Worksheets(TZiel).Cells(ZZ, SZiel + 3) = .Cells(ZQuelle - 1, i) 'Eintrag Stadt  
                Worksheets(TZiel).Cells(ZZ, SZiel + 4) = .Cells(ZQ, i) 'Eintrag Verbindung  
                ZZ = ZZ + 1
            End If
        Next
        ZQ = ZQ + 1
    Loop

End With
End Sub
"SQuelle" und "ZQuelle" geben die Adresse der ersten Zelle (in Deinem Beispiel "C3") an, in welcher "Verbindungs"-Daten enthalten sein können, wobei die Anzahl der unmittelbar oberhalb bzw links angeordneten "Beschriftungs"-Zeilen und -Spalten mit jeweils 2 fest vorgegeben ist.

Grüße
bastla
Mitglied: lea1987
lea1987 12.02.2010 um 17:49:42 Uhr
Goto Top
Hallo Bastla,

das ist total super! Ich probier es am Wochenende aus und melde mich dann mit nem Feedback ;)

Vielen, vielen herzlichen Dank!

Die Lea
Mitglied: lea1987
lea1987 15.02.2010 um 10:55:03 Uhr
Goto Top
Hat funktioniert!! Tausend Dank für die nette Hilfe!