Zusammenführung verschiedener Felder zu einer Summary, ggf. sverweis
#1
Information 
Hallo zusammen,

ich suche für eine Vereinsverwaltung in Excel eine Lösung Informationen zu einzelnen Zellen in einem Arbeitsblatt zusammenzuführen.

Folgende Ausgangssituation habe ich:
Aus Rohdaten einer Datenbank werden csv Dateien erstellt.
Diese bestehen aus Vereinsdaten einzelnen Jahrgängen (2010,2011 usw) und beinhalten jeweils eine gleiche Struktur mit entsprechenden Informationen (hier :Altersgruppen, Melde- und Stammdaten).
Diese Daten (csv) werden als Tabellenblätter zu einem Sheet (im Beispiel 2010,2011, M1, M2 und Stammdaten) zusammengeführt.

Das Tabellenblatt „summary“ dient dazu, die aus den Rohdaten erstellen Informationen auf einen Blick darzustellen.

Die „summary“ enthält alle Feldinformationen der einzelnen Tabellenblätter, hier verteilt auf mehrere Zeilen.

Die weiteren Tabellenblätter enthalten die Feldinformationen aus mehreren Jahren, in dem Beispiel 2010 und 2011 (in der vollständigen Tabelle 5 Jahre), sowie Mannschaftsdaten M1 und M2 (wieder 2010 und 2011) sowie ein zusätzliches Stammdatenblatt.

In dem beigefügten Beispiel habe ich in „summary“ die ersten drei Vereine manuell per „copy“ und „verknüpfen“ zusammengeführt.

Es handelt sich hierbei um ca. 800 Vereine die ihre Daten für 5 Jahre einreichen, die dann in „summary“ in dem vorgesehenen Format erscheinen sollen. Aufgurnd der Größe scheidet ein manuelles Zusammenführen aus.

Leider ist die Vereinsnummer nicht fortlaufend. Es kann somit sein, dass ein Verein in dem einen oder anderen Jahr keine Daten liefert und somit in den Rohdaten (und auch in dem Tabellenblatt des jeweiligen Jahres) nicht mehr erscheint => „blank“, oder neue Vereine hinzukommen.
Somit kann es vorkommen, dass in einem Tabellenblatt der Verein „abc“ in Zeile 2 und in einem anderen Datenblatt in Zeile 4 erscheint.

Meine Idee wäre eine Funktion z. B. sverweis,, die beginnend mit der Vereinsnummer, den Vereinsname, alle dazugehörigen Felder erfasst und in den entsprechenden Zellen des „summary“ ablegt.

Eine Datenbankauswertung z.B. Access o.a. kommt leider nicht in Frage, da nicht vorhanden.

Ich stell mir das so vor, dass Excel nach dem Primärschlüssel (hier VereinNr) sucht und die Datenfelder aus den Arbeitsblättern dann in das Blatt Summary zusammenführt.


Ich hoffe ich konnte mein Problem hinreichend nachvollziehbar erklären und würde mich sehr freuen, wenn ihr mir bei der Lösung helfen könntet.

Vielen Dank und schöne Grüße
Frank


Angehängte Dateien
.xlsx   Forum_Testdaten.xlsx (Größe: 39,97 KB / Downloads: 16)
Top
#2
Code:
Sub M_snb()
   With CreateObject("scripting.dictionary")
        For Each sh In Sheets
           If InStr("summarystammdaten", LCase(sh.Name)) = 0 Then
               sn = sh.Cells(1).CurrentRegion
               For j = 2 To UBound(sn)
                  .Item(sn(j, 1) & "_" & sh.Name) = Application.Index(sn, j)
                  x0 = .Item(sn(j, 1) & "~")
               Next
             End If
          Next
      
        sp = Filter(.keys(), "~")
        For j = 0 To UBound(sp)
           sq = Filter(.keys, Replace(sp(j), "~", "_"))
           For jj = 0 To UBound(sq)
              Sheets("summary").Cells(Rows.Count, 1).End(xlUp).Offset(IIf(jj = 0, 2, 1)).Resize(, UBound(.Item(sq(jj)))) = .Item(sq(jj))
           Next
        Next
   End With
End Sub

Für eine Dictionary Erklärung: schau mal http://www.snb-vba.eu/VBA_Dictionary_en.html
Top
#3
Information 
Hallo snb,

vielen Dank für Deine Bemühungen.

Leider kenn ich mich mit VBA nicht aus, und mit der englischen Beschreibung komme ich leider auch nicht zurecht.

Kannst Du mir bitte erklären, wie ich dies in meinem Excel einbinden kann?

Das wäre super, vielen Dank.

Schöne Grüße
Frank
Top
#4
heje excelfreunde, heje frank;

frank, wenn du eine lösung in excel ohne makros suchst, dann reichen rudimentäre excelkentnisse nicht aus, um so ein komplexes thema zu lösen. da auch vba mangelware ist, wird es kniffelig werden.

ich kann dir adhook keine lösung anbieten. aber beschäftige dich ausführlich mit der "rS1.Methode" nach Reinhold Scheck. dort werden möglichkeiten aufgezeigt, wie gewaltige datenmengen mit excel gehändelt und dargestellt werden können. mein tip: mache dich erst einmal schlau mit beiträgen "rS1.Methode" aus dem web oder "Reinhold Scheck: Excel professionell einsetzen, Franzis Verlag, Poing 2005". diese, etwas ältere ausgabe, sollte für kleines geld und dem studium zuerst einmal genügen. hierbei geht es um eine technik, wie elegant excel eingesetzt werden kann, das ohne makros. aber man muss erst einmal die vorgehensweise aufnehmen und verinnerlichen.
Vielen Dank
--Janosch
                                                     
Excel  2019 (64bit)  Win 10 Pro (64bit)                              
Top
#5
Hallo snb,

ich habe mich heute Vormittag in die (ersten) Grundlagen von VBA einlesen können.
Ich denke, ich werde mich in naher Zukunft weiter intensiv mit VBA befassen.

Dein Marko habe ich heute in meinem "echten" Sheet eingebunden; es läuft und konsolidiert die gewünschten Daten im "summary" Tabellenblatt.
Vielen Dank.

Ich hätte noch eine Bitte an Dich:

Die Felder aus dem letzten Tabellenblatt "Stammdaten" werden bei Deinem Markro nicht mit ausgelesen.
Kannst Dur bitte einmal schauen, ob Du diese noch ergänzen kannst.Rolleyes
Das wäre super, da ich die Daten morgen benötige.
Ich versuche momentan das Makro zu verstehen, um es ggf. selbständig zu integrieren, schaffe es wohl nicht so kurzfristig.

Vielen Dank nochmals für Deine Unterstützung   ;)

Schöne Grüße
Frank
Top
#6
Hallo Frank,

morgen ist zwar schon gut eine Woche vorbei, der Vollständigkeit halber aber hier noch die Lösung.
diese Zeile
If InStr("summarystammdaten", LCase(sh.Name)) = 0 Then
änderst Du in
If InStr("summary", LCase(sh.Name)) = 0 Then
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste