Herbers Excel-Forum - das Archiv
Datensätze aus Tabellen in Gesamt

|
Betrifft: Datensätze aus Tabellen in Gesamt
von: Tanja
Geschrieben am: 02.12.2003 15:15:27
Hallo Profis,
für euch wahrscheinlich kein Problem - für mich VBA-Neuling schon...:
Ich würde gerne in meinem vorletzten Blatt alle Datensätze, die in den vorangegangen Tabellenblättern (ausser dem ersten) eingegeben wurden, auflisten.
In den Blättern kann eine unterschiedliche Anzahl an Datensätzen (resp. Zeilen) eingetragen sein, aber im Gesamtblatt sollten keine Lücken entstehen - lieber jeweils eine Leerzeile...
Kann man das mit VBA hinbekommen?
Vielen Dank für die Bemühungen schon im Voraus!
Gruß
Tanja
Betrifft: AW: Datensätze aus Tabellen in Gesamt
von: Nike
Geschrieben am: 02.12.2003 15:38:46
Hi,
eine kleine Fingerübung zur Abwechslung ;-)
Sub Gesamt()
Dim wks As Worksheet
Dim wksGesamt As Worksheet
Dim lngZzeil As Long
Dim lngZeil As Long
Set wksGesamt = Worksheets(Worksheets.Count - 2)
lngZzeil = 1
For i = 2 To Worksheets.Count - 3
Set wks = Worksheets(i)
lngZeil = 1
Do Until wks.Cells(lngZeil, 1) = ""
wks.Rows(lngZeil).Copy wksGesamt.Rows(lngZzeil)
lngZzeil = lngZzeil + 1
lngZeil = lngZeil + 1
Loop
Next
End Sub
Bye
Nike
Betrifft: Funktioniert Nicht! Datensätze aus Tabellen Ges.
von: Tanja
Geschrieben am: 02.12.2003 15:58:58
äähm, sorry, da is jetz grad mal gar nix passiert :-(
vielleicht sollte ich noch sagen, dass alle Tabellenblätter (auch das Gesamt) eine (identische) Kopfzeile haben...
Kann mir jemand helfen?
Betrifft: AW: test...
von: Nike
Geschrieben am: 02.12.2003 16:23:31
Hi,
die Kopfzeile hat eigentlich keinen Einfluß
im Script wird halt auf den Inhalt in Spalte A geprüft,
solange voll dann kopiere, bis die erste leere Zelle kommt.
ich hab die Startzeile jetzt mal auf 2 erhöht, schaun mer mal ;-)
Ansosnten einfach mal ein Beispiel posten,
dann kann man ggf noch andere Fallen sehen...
Bye
Nike
Sub Gesamt()
Dim wks As Worksheet
Dim wksGesamt As Worksheet
Dim lngZzeil As Long
Dim lngZeil As Long
Set wksGesamt = Worksheets(Worksheets.Count - 2)
lngZzeil = 2 ' Startzeile in Gesamttabelle
For i = 2 To Worksheets.Count - 3 ' von der 2ten bis zur vorvorletzten Tabelle
Set wks = Worksheets(i)
lngZeil = 2 ' Startzeile
Do Until wks.Cells(lngZeil, 1) = ""
wks.Rows(lngZeil).Copy wksGesamt.Rows(lngZzeil)
lngZzeil = lngZzeil + 1
lngZeil = lngZeil + 1
Loop
Next
End Sub
Betrifft: AW: test... - negativ!
von: Tanja
Geschrieben am: 02.12.2003 17:02:28
wo im code wird denn festgelegt, dass in die vorletzte tabelle alle datensätze geschrieben werden sollen?
bislang schreibt es die daten in das 4.letzte Blatt...
ich werd morgen weiter dran rum probieren - auf weitere hilfestellung freu ich mich schon :-)
gruß
tanja
Betrifft: AW: test... - negativ!
von: Nike
Geschrieben am: 02.12.2003 17:14:56
Hi,
>wo im code wird denn festgelegt, dass in die vorletzte tabelle
>alle datensätze geschrieben werden sollen?
hier:
Set wksGesamt = Worksheets(Worksheets.Count - 2)
Bye
Nike
Betrifft: AW: es geht! - jetzt Zusatzfrage!!!
von: Tanja
Geschrieben am: 03.12.2003 09:44:36
Guten Morgen Nike und alle anderen Profis,
könnte man die Datensätze jeweils noch um eine Spalte nach rechts verrücken und dann in der ersten Spalte jeweils den Tabellennamen einfügen, aus dem der jeweilige Datensatz stammt?
Bin gespannt!
Vielen Dank im voraus :-)
Gruß
Tanja
Betrifft: AW: es geht! - jetzt Zusatzfrage!!!
von: Nike
Geschrieben am: 03.12.2003 09:59:09
Hi,
woran hat es denn gelegen, das es jetzt geht?
Sub Gesamt()
Dim wks As Worksheet
Dim wksGesamt As Worksheet
Dim lngZzeil As Long
Dim lngZeil As Long
Set wksGesamt = Worksheets(Worksheets.Count - 2)
lngZzeil = 2 ' Startzeile in Gesamttabelle
For i = 2 To Worksheets.Count - 3 ' von der 2ten bis zur vorvorletzten Tabelle
Set wks = Worksheets(i)
lngZeil = 2 ' Startzeile
Do Until wks.Cells(lngZeil, 1) = ""
wks.Rows(lngZeil).Copy wksGesamt.Rows(lngZzeil)
With wksGesamt.Cells(lngZzeil, 1)
.Insert xlToRight
.Value = wks.Name
End With
lngZzeil = lngZzeil + 1
lngZeil = lngZeil + 1
Loop
Next
End Sub
Bye
Nike
Betrifft: AW: es geht! - jetzt Zusatzfrage!!!
von: Tanja
Geschrieben am: 03.12.2003 11:33:19
Mein letztes Blatt war keine Tabelle sondern ein Diagramm, deshalb musst ich
Set wksGesamt = Worksheets(Worksheets.Count)
statt der obigen Zeile einsetzen.
Zu dem neuen Problem:
Es wurden korrekt alle Daten eine spalte nach rechts verschoben - nur kommen anstatt der daten aus spalte a (die in gesamt in spalte b erscheinen sollten) gar nicht mehr in gesamt. sie sind durch den tabellennamen ersetzt - der sollte nun aber in spalte a auftauchen.
Kann man das so verstehen?
Vielen Dank für deine Unterstützung :-)
Gruß
Tanja
Betrifft: AW: Kann man das so verstehen? - Nö ;-)
von: Nike
Geschrieben am: 03.12.2003 13:22:37
Hi,
>Kann man das so verstehen?
Ehrlich gesagt, weniger ;-)
Eigentlich wird hier eine Zelle in Gesamt eingefügt
With wksGesamt.Cells(lngZzeil, 1)
.Insert xlToRight
und hier der Wert in Spalte 1 geschrieben
.Value = wks.Name
End With
Bye
Nike
Betrifft: AW: Kann man das jetzt verstehen?
von: Tanja
Geschrieben am: 04.12.2003 16:51:45
Okay, ich versuch's nochmal:
so sieht gesamt jetzt aus:
spalte A ist leer
spalte B enthält die Tabellennamen aus denen die Datensätze kommen - die daten, die in den ursprünglichen datensätzen in spalte A standen - jetzt also in b sein sollen - sind überschrieben
ab spalte c ist alles richtig, d. h. b aus datensätzen ist in c, c aus datensätzen steht in d usw.
kann man da noch was machen?
vielen dank und einen gruss
tanja