282 Aufrufe
Gefragt in Datenbanken von tanjaelbe Einsteiger_in (33 Punkte)
Hallo,

ich habe eine Excel Liste mit 500 Adressdaten in Zeilen, z.B.

A25 - Kontonummer 70409

A27 - Unternehmensname   /   F27 (der Name)

A36 - Straße       /    F36 (der Name)

A37 - Postleitzahl /  F37 (die Postleitzahl)

A38 - Ort             /  F38 (der Ort)

usw.  es kommen noch Land, Ust. Nummer, IBAN, etc. ( Nicht zu jeder Kontonummer gleich viele Zeilen )

Und dann geht es z.B. in Zeile 42 weiter mit der nächsten Kontonummer und wieder alles untereinander...

Wie kann ich das in Spalten umwandeln, das Ort, PLZ, etc. auch der richtigen Kontonummer zugeordnet werden ?

Kto Nummer      Name     Straße    OLZ     Ort     Ust. ID     IBAN     BLZ     Telefon    Email     usw.

Ist bestimmt einfach oder ? Ich finde die Lösung leider nicht.

Vielen Dank für Eure Hilfe

Tanja

9 Antworten

0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)

Hallo Tanja,

schau dir mal das mal an: WVERWEIS

(Ich hoffe, ich habe das richtig verstanden).

Gruß

M.O.

0 Punkte
Beantwortet von tanjaelbe Einsteiger_in (33 Punkte)
Hallo M.O.,

vielen Dank. Ja, das sieht schon richtig aus aber dann muss ich 500 x eine WVerweis Formel erstellen, weil es ja immer eine andere Kontonummer ist ? Das ist natürlich auch sehr aufwendig.

Also im Beispiel der Name Barbara ist bei mir ja die Kontonummer... Und davon habe ich 500 verschiedene...

Gruß

Ines
0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)

Hallo Ines,

wenn du das mit einer Formel machst, ist natürlich etwas Handarbeit nötig, auch wenn du die Formeln ziehen kannst.

Wenn du das bequemer haben willst, dann hilft nur ein Makro. Wenn du mal eine kleine Beispieltabelle mit ein paar Dummy-Daten zur Verfügung stellen könntest, kann ich mir das mal anschauen. Die Tabelle sollte natürlich so aufgebaut sein, wie dein Original. Ein Anleitung, wie du hier eine Tabelle einstellen kannst, findest du hier: Klick mich!

Gruß

M.O.

0 Punkte
Beantwortet von tanjaelbe Einsteiger_in (33 Punkte)

Hallo M.O.,

vielen Dank. Hier mal eine Beispieldatei

Ich habe die Daten auch noch in einer anderen Form, wo teilweise schon Daten in Spalten stehen aber dann auch wieder nicht in der gleichen Zeile wie die Kontonummer, so dass ich nicht automatisch Zeilen löschen kann. Und die Datei enthält nicht alle Daten, wie Bankdaten, etc.Außerdem sind PLZ und Ort wieder in einer Zelle, was auch wieder umformatiert werden müsste.

Vielleicht hilft die Datei trotzdem um irgendwie mit SVERWEIS zu arbeiten ?  Beispieldatei 2

Im Voraus vielen Dank für die Hilfe

Tanja

0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo Tanja,

wenn du SVERWEIS nutzen willst, brauchst du ein eindeutiges wie z.B. eine Kontonummer, die in der ersten Spalte der betreffenden Matrix steht. Danach müssen sich die anderen Daten in der gleichen Zeile anschließen. Also z.B. immer von Zelle A1 bis F1 stehen die Daten des ersten Kunden, in dem Bereich von A2 bis F2 dann die Daten des 2. Kunden usw. Außerdem müssen die Daten auch homogen sein, d.h. in Spalte A steht immer die Kundennummer, in Spalte B immer der Name, in Spalte C immer die PLZ usw.

Mit deiner zweiten Beispieltabelle kannst du da nicht viel anfangen, da die Daten in mehreren Zeilen dargestellt und auch nur teilweise homogen sind.

In deiner ersten Tabellen stehen die Daten ja in den Spalten A (Kontonummer) und B. Ich nehme mal an, dass die grün hinterlegten Überschriften die künftige Tabelle darstellen sollen. Oder stehen da in deiner echten Tabelle auch noch Daten drin?

Gruß

M.O.
0 Punkte
Beantwortet von tanjaelbe Einsteiger_in (33 Punkte)
Hallo M.O.,

ganz genau, grün markiert ist das, wie ich es gerne hätte.

Senkrecht in A  nur die Kontonummern und dann in Spalten die dazugehörigen Daten.

Wäre toll, wenn Du helfen kannst

Danke

Tanja
0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)

Hallo Tanja,

kopiere das folgende Makro in ein allgemeines Modul deiner Datenbanktabelle.

Sub umstellen()
Dim lngKtoNr As Long
Dim lngLetzte As Long
Dim lngZeile As Long
Dim lngSpalte As Long
Dim d As Integer
Dim arrDaten As Variant
Dim bExists As Boolean
Dim strName As String

'Name für neues Arbeitsblatt festlegen
strName = "Daten neu"

With ActiveSheet
  'Letzte Zeile in Spalte A ermitteln
   lngLetzte = .Cells(Rows.Count, 1).End(xlUp).Row

   'Spalten A und B in Array einlesen
   arrDaten = .Range("A1:B" & lngLetzte)
End With

'Neues Blatt wird am Ende eingefügt
Worksheets.Add After:=Worksheets(Worksheets.Count)
'Neues Blatt benennen
ActiveSheet.Name = strName

'Daten in neues Blatt schreiben
With Worksheets(strName)
'in Spalte A wird die Kontonummer geschrieben
 .Range("A1") = "Kontonummer"
 
 '1. Einfügezeile festlegen: Zeile 1
 lngZeile = 1
  
 'Array mit eingelesenen Daten durchlaufen
 For d = 1 To UBound(arrDaten, 1)
   'Marker für Überschrift zurücksetzen
   bExists = False
   
   'Prüfen, ob Kontonummer im Feld steht und falls ja, dann Nummer extrahieren und in Tabelle schreiben
   If Left$(arrDaten(d, 1), 11) = "Kontonummer" Then
      lngZeile = lngZeile + 1            'Zähler für Einfügezeile erhöhen, da neue Daten
      lngSpalte = 1
      .Cells(lngZeile, 1) = CLng(Right$(arrDaten(d, 1), Len(arrDaten(d, 1)) - 12))          'nur Kontonummer in Spalte A eintragen
    Else
      If arrDaten(d, 2) <> "" Then
        'Überschriften suchen
        lngSpalte = 1
        bExists = False
         For lngSpalte = 1 To .Cells(1, Columns.Count).End(xlToLeft).Column
          If .Cells(1, lngSpalte) = arrDaten(d, 1) Then
             bExits = True
             Exit For
           End If
          Next lngSpalte
          
          If bExists = True Then
            .Cells(lngZeile, lngSpalte) = arrDaten(d, 2)
           Else
            .Cells(1, lngSpalte) = arrDaten(d, 1)
            .Cells(lngZeile, lngSpalte) = arrDaten(d, 2)
          End If
      End If
    End If
 Next d

End With

End Sub

Führe das Makro aus deiner 1. Beispieltabelle (Daten stehen in den Spalten A und B) aus.

Die Daten werden in ein neues Arbeitsblatt übertragen (Daten neu).

Gruß

M.O.

0 Punkte
Beantwortet von tanjaelbe Einsteiger_in (33 Punkte)

Hallo M.O.

SUPER KLASSE ! Hat einwandfrei funktioniert. 1000 Dank für Deine Hilfe. yesyesyes

Wirklich großartig smiley

Danke, Danke, Danke

LG Tanja

0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo Tanja,

danke für die Rückmeldung. Freut mich, dass alles so klappt, wie du willst.

Gruß

M.O.
...