Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1016to1020
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Summieren von Tabellenzeilen

Summieren von Tabellenzeilen
21.10.2008 09:45:00
Tabellenzeilen
Hallo,
kann mir jemand einen Tip geben, wie ich es schaffe, Zeilen aus mehreren Tabellenblättern in einer neuen Tabelle untereinander zu schreiben?
Die Tabellenblätter sind als Datum benannt und es stehen jeweils Werte in den einzelnen Zeilen. Die Zuordnung erfolgt durch eine Nummer in der Spalte A. Die Summierung in einem separaten Tabellenblatt hab ich hinbekommen, aber ich hätte gerne in diesem Summenblatt die einzelnen Zeilen noch untereinander angeordnet.
Geht das irgendwie?
Vielen dank für feedback

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Summieren von Tabellenzeilen
21.10.2008 11:46:52
Tabellenzeilen
Hallo Namenloser (bitte mal Forumsregeln in Bezug auf Nicknames lesen)
z. Bsp. so:
Tabellenblattname: Tabelle1
 

A

B

C

D

E

1

01.10.2008

test 01-10-08 A1

test 01-10-08 B1

test 01-10-08 C1

test 01-10-08 D1

2

02.10.2008

test 02-10-08 A1

test 02-10-08 B1

test 02-10-08 C1

test 02-10-08 D1


Benutzte Formeln:
B1: =INDIREKT("'"&TEXT($A1;"TT.MM.JJ")&"'!"&ADRESSE(ZEILE(A$1);SPALTE()-1))
C1: =INDIREKT("'"&TEXT($A1;"TT.MM.JJ")&"'!"&ADRESSE(ZEILE(B$1);SPALTE()-1))
D1: =INDIREKT("'"&TEXT($A1;"TT.MM.JJ")&"'!"&ADRESSE(ZEILE(C$1);SPALTE()-1))
E1: =INDIREKT("'"&TEXT($A1;"TT.MM.JJ")&"'!"&ADRESSE(ZEILE(D$1);SPALTE()-1))
B2: =INDIREKT("'"&TEXT($A2;"TT.MM.JJ")&"'!"&ADRESSE(ZEILE(A$1);SPALTE()-1))
C2: =INDIREKT("'"&TEXT($A2;"TT.MM.JJ")&"'!"&ADRESSE(ZEILE(B$1);SPALTE()-1))
D2: =INDIREKT("'"&TEXT($A2;"TT.MM.JJ")&"'!"&ADRESSE(ZEILE(C$1);SPALTE()-1))
E2: =INDIREKT("'"&TEXT($A2;"TT.MM.JJ")&"'!"&ADRESSE(ZEILE(D$1);SPALTE()-1))
Tabellenblattname: 01.10.08
 

A

B

C

D

1

test 01-10-08 A1

test 01-10-08 B1

test 01-10-08 C1

test 01-10-08 D1


Tabellenblattname: 02.10.08
 

A

B

C

D

1

test 02-10-08 A1

test 02-10-08 B1

test 02-10-08 C1

test 02-10-08 D1


Rückmeldung wäre nett
Gruß
David
Anzeige
AW: Summieren von Tabellenzeilen
22.10.2008 08:46:36
Tabellenzeilen
Hallo David,
grundsätzlich ok, aber ich habe ja trotzdem noch die Thematik, daß ich die Tage dann immer manuell angeben muß. Ich habe mal den Code angehängt, vielleicht wird es dann klarer. Ich lasse heute mit einem Makro eine Datei auslesen, die mir verschiedene Werte für einen Mitarbeiter importiert, andere werden manuell dazu geschrieben und das für jeden tag. In dem Tabellenblatt Summe wird der gesamte Monat dargestellt, allerdings nur als Einzelwert, so daß ich eine Entwicklung des Mitarbeiters über die einzelnen Monatstage nicht verfolgen kann. Das war die Frage, ob ich unterhalb der Summenzeile jedes Mitarbeiters auch noch die Einzelzeilen darstellen kann.
Sry wegen dem Nicknamen, ich bin hier nicht so oft.
Rainer
ption Explicit
Public i_Zeile, i_Spalte As Integer
Public s_Spalte As String

Private Sub f_Tabellensuche(s_Tabelle, b_Kontrolle)
Dim Wb As Workbook
Dim b As Byte
Set Wb = ActiveWorkbook
For b = 1 To Wb.Sheets.Count
If s_Tabelle = Wb.Sheets(b).Name Then
b_Kontrolle = True
GoTo Ende
Else
b_Kontrolle = False
End If
Next b
Ende:
End Sub



Private Sub f_Tabellenkopie(s_Tabellevon, s_Tabellenach, s_NeuerName)         'Kopie der  _
Tagesvorlage machen
Worksheets(s_Tabellevon).Visible = True                          'Die Volage einblenden
Worksheets(s_Tabellevon).Copy After:=Worksheets(1)     'Die Vorlage kopieren
Worksheets(s_Tabellevon).Visible = False                         ' Die vorlage wieder  _
ausblenden
ActiveSheet.Name = s_NeuerName
Worksheets(s_NeuerName).Tab.ColorIndex = 35
End Sub



Private Sub f_Datumsstring(b_Tag, s_allg_Tab)
Dim s_Tabelle, s_Tag, s_Monat, s_Jahr As String
If b_Tag 



Private Sub f_Filterabfrage(s_Tabellevon, s_Tabellenach)
Worksheets(s_Tabellevon).Activate
If ActiveSheet.AutoFilterMode Then Selection.AutoFilter
Worksheets(s_Tabellenach).Activate
End Sub



Private Sub Zellensuche(s_Quelltabelle, s_Suchbereich, SucheWert)
Dim o_Suche As Object
Dim s_Suche, s_Spalte_A, s_Spalte_B As String
Dim b_Länge, b_Suche As Byte
Dim s_Zellenadresse As String
s_Zellenadresse = ""
b_Suche = 0
'In der Quelltabelle nach Überschrift 'Suchwort' suchen
With Worksheets(s_Quelltabelle).Range(s_Suchbereich)
Set o_Suche = .Find(SucheWert, LookIn:=xlValues)  'Find(Wert der gesucht wird, ?)
If o_Suche Is Nothing Then Set o_Suche = .Find(SucheWert, LookIn:=xlFormulas)  'Find( _
Wert der gesucht wird, ?)
If Not o_Suche Is Nothing Then                   'wenn Suche nicht leer ist
If o_Suche = SucheWert Then
s_Zellenadresse = o_Suche.Address
'Else
'    Do
'        Set o_Suche = .FindNext(o_Suche)
'        s_Zellenadresse = o_Suche.Address
'    Loop While Not o_Suche = SucheWert
End If
End If
End With
If s_Zellenadresse  "" Then
b_Länge = Len(s_Zellenadresse)
s_Spalte = Right(s_Zellenadresse, b_Länge - 1)
b_Suche = InStr(s_Spalte, "$")
i_Zeile = Right(s_Spalte, b_Länge - 1 - b_Suche)
i_Zeile = i_Zeile * 1
s_Spalte = Left(s_Spalte, b_Suche - 1)
b_Länge = Len(s_Spalte)
If b_Länge = 2 Then
s_Spalte_A = Left(s_Spalte, 1)
s_Spalte_B = Right(s_Spalte, 1)
i_Spalte = (Asc(s_Spalte_A) - 64) * 26 + Asc(s_Spalte_B) - 64
i_Spalte = i_Spalte * 1
Else
i_Spalte = Asc(s_Spalte) - 64
End If
Else
i_Zeile = 0
i_Spalte = 0
s_Spalte = ""
End If
End Sub


Sub Monatsbericht()
Const c_Tage As Byte = 31
Dim b_Kontrolle As Boolean
Dim b_Tag, b_Spalte As Byte
Dim i, i_Zeilenach, i_Zeilevon, i_Nummer As Integer
Dim s_Tabellevon, s_Tabellenach, s_NeuerName, s_allg_Tab As String
Dim Zwischenwert, Wert As Double
b_Kontrolle = True
s_Tabellevon = "Vorlage Monat"
s_Tabellenach = "Database"
s_NeuerName = Range("Monatsname")
i_Zeilenach = 15 'Startzeile zum schreiben in die Zieltabelle
b_Spalte = 1 'Startspalte zum auslesen in der Quelltabelle
Call f_Tabellensuche(s_NeuerName, b_Kontrolle)
If b_Kontrolle Then
MsgBox "Für diesem Monat ist schon ein Bericht vorhanden! Diesen bitte erst löschen."
Else
Call f_Tabellenkopie(s_Tabellevon, s_Tabellenach, s_NeuerName)
s_Tabellenach = s_NeuerName
Worksheets(s_NeuerName).Range("B11") = _
Worksheets("Database").Range("Monatsname") & " " & Worksheets("Database").Range("Jahr4")
For b_Tag = 1 To c_Tage
s_allg_Tab = ""
i_Zeilevon = 15 'Startzeile zum auslesen in der Quelltabelle
Call f_Datumsstring(b_Tag, s_allg_Tab)
s_Tabellevon = s_allg_Tab
Worksheets(s_NeuerName).Range("B10") = "ist bei " & s_Tabellevon
Call f_Tabellensuche(s_Tabellevon, b_Kontrolle)
If b_Kontrolle Then
Worksheets(s_Tabellevon).Outline.ShowLevels RowLevels:=0, ColumnLevels:=2
Call f_Filterabfrage(s_Tabellevon, s_Tabellenach) 'Filter ist in Zeile 14
Do While Worksheets(s_Tabellevon).Cells(i_Zeilevon, 1) ""
i_Nummer = Worksheets(s_Tabellevon).Cells(i_Zeilevon, 1)
Call Zellensuche(s_Tabellenach, "A:A", i_Nummer)
If i_Zeile = 0 Then 'Der Agenten wurde nicht gefunden.
'Agent wird neu in den Monatsbericht aufgenommen.
'kopieren der Vorlage ans Ende.
For i = 0 To 3
Worksheets(s_Tabellenach).Cells(i_Zeilenach, b_Spalte + i) = _
Worksheets(s_Tabellevon).Cells(i_Zeilevon, b_Spalte + i)
Next i
For i = 4 To 21
Zwischenwert = Worksheets(s_Tabellevon).Cells(i_Zeilevon, b_Spalte + i)
If Zwischenwert = "" Then Zwischenwert = 0
Worksheets(s_Tabellenach).Cells(i_Zeilenach, b_Spalte + i) = Zwischenwert
Next i
i_Zeilenach = i_Zeilenach + 1
Rows(i_Zeilenach).Insert Shift:=xlDown
'---------------------------------------
Else
'Der Agent wird in der Monatsliste schon gefunden
For i = 4 To 17
Zwischenwert = Worksheets(s_Tabellevon).Cells(i_Zeilevon, b_Spalte + i)
Wert = Worksheets(s_Tabellenach).Cells(i_Zeile, b_Spalte + i)
If Zwischenwert = "" Then Zwischenwert = 0
Worksheets(s_Tabellenach).Cells(i_Zeile, b_Spalte + i) = _
Zwischenwert + Wert
Next i
End If
i_Zeilevon = i_Zeilevon + 1
Loop
End If
Next b_Tag
End If
Range("P13:W13").AutoFill Destination:=Range("P13:W" & i_Zeilenach - 1), Type:=xlFillDefault
Rows(14).Clear
Worksheets(s_NeuerName).Range("B10").Clear
ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1
End Sub


Anzeige
AW: Summieren von Tabellenzeilen
22.10.2008 08:56:00
Tabellenzeilen
Hallo Rainer,
da ich meinen VBA-Level auch nur als "bescheiden" bezeichne, steige ich auf die Schnelle nicht so einfach durch deinen Code und für eine detaillierte Analyse fehlt mri die Zeit.
Mein Beispiel sollte dir eigentlich auch nur die prinzipielle Vorgehensweise verdeutlichen, nämlich daß du mit INDIREKT die Zellbezüge, die du vorher als String zusammensetzt, wieder in Werte umwandelst. Das kannst du natürlich auch innerhalb eines VBA-Makros machen und ggf. die Formeln dann in die Tabelle eintragen lassen. Die Definition der einzelnen Tage muss nicht zwingend manuell erfolgen, sondern kann auch durch eine Variable innerhalb deines Codes festgelegt werden.
Vielleicht schaffst du es mit diesem Hintergrundwissen ja auch selbst, ansonsten muß da einer der VBA-Profis ran.
(Stelle die Frage deswegen wieder auf 'offen')
Gruß
David
Anzeige
AW: Summieren von Tabellenzeilen
22.10.2008 09:41:00
Tabellenzeilen
Hallo David,
vielen Dank fürs Feedback.
Rainer

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige