Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1612to1616
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

@yummi: Zeilen zusammenfassen

@yummi: Zeilen zusammenfassen
12.03.2018 16:51:09
arek

Hi yummi,
du hast mir im letzten Beitrag folgenden Code als Hilfestellung gegeben, um folgendes zu lösen: "Wenn die Spalten B bis J identisch sind (bis auf den Eintrag in H) sollen diese Zeilen zusammengefasst werden und die eingetragenen Mengen in Spalte H aufaddiert werden ...Hast du dazu eine Idee?"
Bestimme letztte Zeile von B-J
for zeile = erstezeile bis letzte zeile
summe = zeile, B
for spalte = C bis J
if spalte ungleich H then
if zeile, B = Zeile, spalte then
summe = summe + Zeile, spalte
else
summe = 0
spalte = I
end if
end if
next spalte
if summe ungleich 0 then
zeile,H = summe
end if
next zeile
Könntest du das in die angehängte Datei übertragen bzw. einfügen (https://www.herber.de/bbs/user/120368.xlsx) ? Weil ich komme leider nicht ganz klar damit...Das wäre wirklich hilfreich!
Mein derzeitiger Code lautet:
Option Explicit
Dim wkb As Workbook
Dim wksdata As Worksheet
Dim wksDest As Worksheet
Dim wkbData As Workbook
Sub Update_Button()
Dim llastr As Long
Dim ilasts As Integer
Dim z As Long
Dim s As Integer
Dim llastdest As Long
Dim Pfad As String
Dim Dateiname As String
Dim iRow As Long
Dim arr, na, b As Boolean
Dim FoundCells As Range
Pfad = "C:\benutzer\arek\Desktop\" 'Pfad, unter welchem die Stundenlisten liegen
Dateiname = Dir(Pfad & "*_hours__booking.xlsm")
Initialisiere 'Funktion Initialisiere siehe unten
On Error Resume Next
wksDest.UsedRange.Offset(1, 0).SpecialCells(xlCellTypeConstants).Value = ""
On Error GoTo 0
Do While Dateiname  "" 'Durchlaufen der Stundenlisten
Set wkbData = Workbooks.Open(Filename:=Pfad & Dateiname)
Set wksdata = wkbData.Sheets("Hours")
llastr = BestimmeLetzteZeile(wksdata, 2)  'letzte Zeile erstellen
ilasts = BestimmeLetzteSpalte(wksdata, 2) 'letzte Spalte bestimmen
llastdest = BestimmeLetzteZeile(wksDest, 1) + 1
If ilasts > 54 Then 'Stundenlisten nur bis Spalte 54 durchlaufen
ilasts = 54
End If
If llastr > 1500 Then 'Stundenlisten nur bis Zeile 1500 durchlaufen
llastr = 1500
End If
For z = 5 To llastr   'Alle Zeilen ab Zeile 5 werden durchlaufen
For s = 3 To ilasts   'Alle Spalten ab Spalte C werden durchlaufen
If wksdata.Cells(z, s).Value  "" And wksdata.Cells(z, s).Value  0 Then
'Zeile kopieren und anschließender Übergang zur nächsten Stundenliste
wksDest.Cells(llastdest, 1).Value = wksdata.Cells(2, s).Value  ' _
Kalenderwoche
wksDest.Cells(llastdest, 4).Value = wksdata.Cells(1, 1).Value  ' _
Kostenstelle
wksDest.Cells(llastdest, 5).Value = wksdata.Cells(1, 3).Value  ' _
Leistungsart
wksDest.Cells(llastdest, 7).Value = wksdata.Cells(z, 2).Value  'Projektname
wksDest.Cells(llastdest, 8).Value = wksdata.Cells(z, s).Value  'Menge
wksDest.Cells(llastdest, 9).Value = "H"                        'ME
wksDest.Cells(llastdest, 10).Value = wksdata.Cells(1, 2).Value ' _
Personalnummer
llastdest = llastdest + 1
End If
Next s
Next z
wkbData.Close False
Set wksdata = Nothing
Set wkbData = Nothing
Dateiname = Dir()    'Automatische Auswahl der nächsten Datei
Loop
End Sub
Function BestimmeLetzteZeile(ByVal wks As Worksheet, ByVal s As Integer) As Long
BestimmeLetzteZeile = wks.Cells(wks.Rows.Count, s).End(xlUp).Row
End Function

Function BestimmeLetzteSpalte(ByVal wks As Worksheet, ByVal z As Long) As Integer
If wks.Cells(z, 1).Value  "" Then
BestimmeLetzteSpalte = wks.Cells(z, wks.Columns.Count).End(xlToLeft).Column
Else
BestimmeLetzteSpalte = 1
End If
End Function

Function Initialisiere()
If wkb Is Nothing Then
Set wkb = ThisWorkbook
Set wksDest = wkb.Sheets("Overview")
End If
End Function

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: @yummi: Zeilen zusammenfassen
13.03.2018 04:28:06
fcs
Hallo arek,
in deiner Beispiel-Datei fehlen Testdaten und ein 2. Beispiel, wie die Daten nach der Ausführung des Makros aussehen sollen.
Deine Beschreibung des gewünschten Makros-Ablaufs kann ich nur bedingt nachvollziehen.
Gruß
Franz
AW: @yummi: Zeilen zusammenfassen
15.03.2018 10:23:28
yummi
Hallo Arek,
schau dir mal den Beitrag vom 08.03. 10:17 an. Da ist folgender code für deine Besispieldatei:

Function Zusammenfassen(ByVal wks As Worksheet)
Dim letzteZeile As Long
Dim z As Long
Dim s As Integer
Dim Anz As Integer
letzteZeile = BestimmeletzteZeile(wks, 2)
For z = 2 To letzteZeile
Anz = 1
For s = 3 To 9  'C bis J
If s  8 Then
If InStr(0, wks.Cells(z, 2).Value, wks.Cells(z, s).Value, vbTextCompare) = 0  _
Then
Anz = Anz + 1
Else
Anz = 0
s = 10
End If
End If
Next s
If Anz  0 Then
wks.Cells(z, 8).Value = Anz
End If
Next z
End Function
Gruß
yummi
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige