VBA CODE für die Auswertung
#21
Hallo Berni vielen Dank für deine Mühe.
Hab es gerade durchlaufen lassen. Es passt eigentlich. Ich dachte wenn man es stückchenweise erarbeitet dann ist es besserSmile 



Zusammenfassend:
Die Bedienung pro Raum > 0 wird überprüft , wenn > 0 dann wird die Datei für den Raum eingelesen. Und die Datei mit dem Wert multipliziert.

Wie im Anhang zu sehen ist, (siehe Bild"Problem") werden die Werte multipliziert jedoch sind rechts davon noch "0er" Werte?.
Die erste Spalte mit den Stunden soll nicht multipliziert werden aber alle anderen!!!
Dann ist die erste Frage erledigt.

Im letzten Schritt soll ein neues Tabellenblatt erzeugt werden mit dem Namen "Auswertung"

In diesem Tabellenblatt "Auswertung" sollen nun alle Daten pro Spalte ( außer die Stunden) addiert werden ( ausgenommen Tabelle 1)

Das Tabellenblatt "Auswertung" sollte dann so aussehen ( siehe Bild 2 )

Mir ist gerade eingefallen, dass eventuell am Anfang von allem noch der Befehl rein muss wie das alle Tabellenblätter außer Tabelle 1 gelöscht werden soll.

Ich danke dir für deine Mühen. Ich hoffe die Frage zwei ist jetzt verständlicher.


Angehängte Dateien Thumbnail(s)
       
Top
#22
Ok, aber erst morgen. Schönen Abend noch!
Schöne Grüße
Berni
Top
#23
Dankeschön für deine Hilfe bis jetzt! Echt geil!
Top
#24
Hallo Berni,
für das löschen der Tabellenblätter habe ich folgenden Code durch Recherche gefunden:

Sub Löschen()

Dim wks As Worksheet
Application.DisplayAlerts = False
For Each wks In ThisWorkbook.Sheets
If LCase(wks.Name) <> "tabelle1" And _
   LCase(wks.Name) <> "tabelle1" And _
   LCase(wks.Name) <> "tabelle1" Then wks.Delete
Next
Application.DisplayAlerts = True


End Sub

funktioniert soweit auch ganz gut.

Grüße
Top
#25
So, dann wollen wir mal:

Zitat:jedoch sind rechts davon noch "0er" Werte?
Nun, das erklärt sich wie folgt. Ich ermittle ja mit den Zeilen
Code:
Z = .Cells(.Rows.Count, "A").End(xlUp).Row
S = .Cells(3, .Columns.Count).End(xlToLeft).Column

die letzte Zeile und letzte Spalte des jeweiligen Blatts (Beispiel Schlafzimmer).
Mit den nächsten Zeilen
Code:
Sheets("Tabelle1").Range("A" & i).Copy
.Range(.Cells(3, "A"), .Cells(Z, S)).PasteSpecial Paste:=xlPasteAll, operation:=xlMultiply
kopiere ich aus dem Tabellenblatt1 (also das, wo die Liste mit den Zimmern ist) den Wert der Fläche (1. Zeile).
Danach multizpliziert der Code den Bereich A3 bis [lezteSpalte][letzteZeile] mit der Fläche.

Die letzte Spalte wird also "nicht passend" ermittelt. Falls du weißt, wieviele Spalten betroffen sind, also es immer gleich viele Spalten sind, dann könntest du die Variable S (letzte Spalte) entfernen und einfach fix einsetzen. Angenommen die letzte Spalte ist E, dann sähe das so aus:
Code:
.Range(.Cells(3, "B"), .Cells(Z, "E")).PasteSpecial Paste:=xlPasteAll, operation:=xlMultiply
Als erste Spalte habe ich nun "B" eingesetzt, dann werden die Stunden nicht multipliziert. Also würde nun der Bereich B3:E[letzte Zeile] mit der Fläche multipliziert.



Zitat:In diesem Tabellenblatt "Auswertung" sollen nun alle Daten pro Spalte ( außer die Stunden) addiert werden
Sind in den einzelnen Räumen die Spalten immer identisch? (muss ja fast so sein, sonst ergäbe eine Addition keinen Sinn).
Und sind es immer gleich viele Zeilen oder je Raum unterschiedlich viele?
Schöne Grüße
Berni
Top
#26
Hallo Berni, 

Die Textdatei wird immer gleich aufgebaut sein, d.h immer gleich viele Spalten und Zeilen.
Top
#27
Dann ist das sehr einfach, ergänze den Code um die beiden Zeilen vor End With und die Zeile danach

Code:
           With ActiveSheet
               .Move After:=Sheets(Sheets.Count)
               Z = .Cells(.Rows.Count, "A").End(xlUp).Row
               S = .Cells(3, .Columns.Count).End(xlToLeft).Column
               Sheets("Tabelle1").Range("A" & i).Copy
               .Range(.Cells(3, "B"), .Cells(Z, "E")).PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply
               .Range("B3:E7").Copy
               Sheets("Auswertung").Range("B3").PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd
           End With
            Application.CutCopyMode = False

Noch Fragen?
Schöne Grüße
Berni
Top
#28
Hallo Berni, habe es gerade ausprobiert. Es funktioniert perfekt!!!

Eine Frage habe ich noch:
Kann man im Tabellenblatt Auswertung noch die Stunden anzeigen lassen ?

Danke für deine Hilfe!!!
Top
#29
Ja, man kann natürlich. Die Frage ist nur - welche Stunden aus welchem Blatt? Die Stunden sollen ja nicht addiert werden.

Außerdem überlasse ich das jetzt mal dir als Fleißaufgabe, man muss ja nicht immer alles vorkauen. Wenn du die letzten Codezeilen etwas analysierst, solltest du das hinkriegen. Learning by doing...
Schöne Grüße
Berni
Top
#30
Hallo Berni, danke ich werde mich daran versuchen! Learning by doing!!
Danke nochmals!

Habe aber noch eine Frage beim Einlesen der Dateien bzw. Wenn ich die Tabellenblätter habe verhaut es weiterhin ein W/qm.


Angehängte Dateien Thumbnail(s)
   
Top


Gehe zu:


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