296 Aufrufe
Gefragt in Tabellenkalkulation von robbi58 Mitglied (950 Punkte)

Einen schönen Tag ans Forum!

Ich habe eine Tabelle mit ca. 1400 Zeilen zu je 35 Spalten angelegt, die zu jeder Person bestimmte Informationen enthalten.

Nun möchte ich zu jeder Person ein Datenblatt erstellen, in dem diese Daten "übersichtlicher" dargestellt werden.

Die Daten liegen auf dem Tabellenblatt mit dem Namen "Datenbank".

Die Daten sollen auf dem Arbeitsblatt ("Datenblatt") übertragen und abgespeichert werden.

Ich möchte nun in das grüne Feld die laufende Nummer eingeben, damit die Daten in die Tabelle übertragen werden.

Ich kopiere dann das Datenblatt und speichere dieses unter der laufenden Nummer ab.

Mithilfe dieses Datenblattes kann ich dann alle Einträge (gefühlte 20.000 Daten) leichter kontrollieren und abspeichern. Dann kann ich dort auch entsprechende Änderungen vornehmen. Ideal wäre es natürlich, dass die Veränderungen dort automatisch auch in das Datenblatt übertragen werden (das würde mir viel Arbeit ersparen.

Viele Fragen auf einmal, aber ich wäre schon um die eine oder andere Lösung meines Vorhabens dankbar.

LG Robert

16 Antworten

+1 Punkt
Beantwortet von computerschrat Profi (31.8k Punkte)
Hallo Robert,

wenn das Eingabefeld A2 ist, setze in der Tabelle Datenblatt in Feld B5 folgende FormenL

=SVERWEIS($A$2;Datenbank!$A$2:$H$2000;2)

Diese Formel ziehst du dann herunter bis B14. Dann ersetzt du den letzten Parameter im SVERWEIS mit fortlaufend ansteigenden Nummern, also beginnend mit 2 aufsteigend bis 11.

Damit füllt sich die Tabelle mit den jeweiligen Daten der Person aus der Datenbank. Vorausgesetzt ist, dass die laufende Nummer in der Datenbank einmalig ist..

Gruß computerschrat
0 Punkte
Beantwortet von xlking Experte (1.2k Punkte)
Hallo Robert,

der Tipp von Computerschrat ist ein Anfang. Dennoch musst du danach dann ganze 1400 mal die Nummer eingeben und den Speichervorgang auslösen. Am besten du machst das ganze nur einmal und zeichnest das mit dem Makrorekorder auf. Dann packst du den Code in eine Schleife

For i = 1 to 1400

'Dein Code

Next i

Der Dateiname sollte natürlich im einfachsten Fall i als laufende Nummer enthalten sonst überspeicherst du die erste Datei 1400 mal.

Um i zum Dateinamen hinzuzufügen einfach Pfad & "\" & Dateiname & "_" & i machen.

Gruß Mr. K.
0 Punkte
Beantwortet von robbi58 Mitglied (950 Punkte)
Hallo Computerschrat,

danke für deine Formel, die ich schon ausprobiert habe.
Allerdings bin ich gescheitert, diese Formel mit der ISTLEER-Funktion zu kombinieren.
Da viele Felder in der Datenbank leer sind, bekomme ich beim Auslesen irgendwelche Daten geliefert.
Ich will aber erreichen, dass diese Zellen leer bleiben.

Mein Dank gilt auch MR. K, nur komme ich erst übermorgen dazu (bin momentan bei einem dreitägigen Musikfestival), seine Anregung auszuprobieren, Denn ja, bei so vielen Datensätzen ist eine Schleife nur von Vorteil.
Gruß von Robert
0 Punkte
Beantwortet von m-o Profi (22.6k Punkte)
Hallo Robert,

wenn du leere Felder auch leer dargestellt haben willst, mache das mit einer Wenn-Formel (hier als Beispiel für das Feld "Gruppe"):

=WENN(SVERWEIS($A$2;Datenbank!$A$2:$H$2000;2;FALSCH)="";"";SVERWEIS($A$2;Datenbank!$A$2:$H$2000;2;FALSCH))

Gruß

M.O.
0 Punkte
Beantwortet von robbi58 Mitglied (950 Punkte)
Hallo M.O.
Danke für die Abänderung der Formel, die jetzt einwandfrei funktioniert.

Ich bedanke mich auch bei Mr. K., nur reichen meine Kenntnisse nicht aus, um deinen Tipp umzusetzen.

Eine Frage hätte ich noch!
Wie kann ich die Tabellenblätter A_1 bis A_100 in B_1 bis B_100 gleichzeitig umbenennen?
Habe im Internet gestöbert und auch genügend Codes gefunden, nur leider keinen, mit dem ich alle Blätter gleichzeitig umbenennen kann.

Ich wünsche allen einen angenehmen Abend.
LG Robert
0 Punkte
Beantwortet von m-o Profi (22.6k Punkte)

Hallo Robert,

kopiere den folgenden Code in ein allgemeines Modul deiner Tabelle:

Sub umbenennen()
Dim t As Integer

For t = 1 To ThisWorkbook.Worksheets.Count
  ThisWorkbook.Worksheets(t).Name = Replace(ThisWorkbook.Worksheets(t).Name, "A", "B")
Next t

End Sub

Damit kannst du deine Blätter einfach umbenennen.

Gruß

M.O.

0 Punkte
Beantwortet von robbi58 Mitglied (950 Punkte)
Guten Morgen M.O.,

dein Code ist mir eine große Hilfe, um meine Arbeitsvorgänge zu vereinfachen.

Danke und noch einen angenehmen, zumindest bei uns in Österreich, Feiertag.

Robert
0 Punkte
Beantwortet von m-o Profi (22.6k Punkte)

Hallo Robert,

und hier noch ein Code, damit du nicht alle 1400 Blätter einzeln speichern musst wink:

Sub blaetter_speichern()
Dim i As Long
Dim strPfad As String
Dim strName As String

'Pfad zum Speichern der einzelnen Blätter - anpassen
strPfad = "C:\Test\"

'Pfadname kontrollieren
If Right(strPfad, 1) <> "\" Then strPfad = strPfad & "\"

'Datenblatt mit allen Nummern durchlaufen und speichern
For i = 1 To 1400            'Anzahl anpassen
  With ThisWorkbook.Worksheets("Datenblatt")
    .Range("A2") = i          'Nummer in Zelle A2 eintragen - ggf. anpassen
    .Calculate                'Arbeitsblatt berechnen
    .Copy                     'Arbeitsblatt in neue Mappe kopieren
  End With
  'Name für neues Arbeitsmappe festlegen
  strName = i
  'Name auf Länge von 4 Zeichen ggf. auffüllen
  Do Until Len(strName) = 4
    strName = "0" & strName
  Loop
  'neue Arbeitsmappe ..
  With ActiveWorkbook
    .SaveAs Filename:=strPfad & strName   'speichern mit neuem Namen
    .Close                                'schließen
  End With
Next i

End Sub

Das Datenblatt wird mit den Formeln gespeichert, so dass die Daten ggf. aktualisiert werden, wenn du in der Haupttabelle etwas änderst.

Den Pfad, in dem die Blätter gespeichert werden sollen, musst du natürlich auf deine Verhältnisse anpassen.
Gruß
M.O.
0 Punkte
Beantwortet von robbi58 Mitglied (950 Punkte)
Hallo M.O.,

zunächst danke für deine Hilfe.
Leider hat es bei mir nicht funktioniert, vielleicht weil ich das falsch angegangen bin.
In meiner Arbeitsmappe habe ich 2 Blätter: "Datenbank" mit allen Daten der 1400 Personen, und das "Datenblatt" mit den Formeln zum Abrufen der Daten.
Ich gebe nun deinen Code mit Anpassung des Speicherortes  ein. Ich bekomme aber stets nur eine Fehlermeldung.
Dass der Fehler aber bei mir liegt, das weiß ich. Nur lautet meine Frage, wie muss ich vorgehen, um erfolgreich zu sein?
Robert
0 Punkte
Beantwortet von m-o Profi (22.6k Punkte)
Hallo Robert,

teile doch mal die Fehlermeldung mit. Und wenn der Fehler auftaucht, dann klicke auf "Debuggen". Dann öffnet sich der VBA-Editor und die Zeile mit dem Fehler ist gelb markiert. Poste diese Zeile auch. Dann kann mal sehen, wo der Fehler liegt.

Gruß

M.O.
...