Registriert seit: 14.04.2014
Version(en): 2003, 2007
Hallo,
dann wird es nichts ohne eine Beispieldatei!
Ich häng' meine Beispieldatei an, damit Du siehst, dass es unter gegebenen Umständen funktioniert.
Spezialfilter über mehrere Tabellen.xlsm (Größe: 21,41 KB / Downloads: 2)
Fenneks Variante würde ich hier nicht nutzen.
Wenn dann würde die FindNext Methode in Frage kommen.
Gruß Atilla
Registriert seit: 14.04.2014
Version(en): 2003, 2007
Hallo,
ok, hab die Beispielmappe gesehen, muss aber jetzt weg.
Meine Variante, so wie ich sie eingestellt habe, funktioniert nur, wenn die Daten als Liste ohne Leezeilen zu der Überschrift vorliegen.
Ich schau später noch einmal rein.
Gruß Atilla
Registriert seit: 22.02.2016
Version(en): 2010
Danke das ist super nett !!
Registriert seit: 06.12.2015
Version(en): 2016
Hallo,
Schleifen?
Ist gibt zwei Arten von Schleifen:
For i = 1 to 12 : mach was : next i
Oder
For each ws in thisworkbook.sheets : mach was : next
Da die for...next -Schleife nicht funktioniert, must du sie durch die genannte for ... each - Schleife ersetzen. Als Zusatz ist notwendig:
If ws.name <> "Result" thenn
der Code
End if
Mfg
Registriert seit: 22.02.2016
Version(en): 2010
(22.02.2016, 16:15)Fennek schrieb: Hallo,
Schleifen?
Ist gibt zwei Arten von Schleifen:
For i = 1 to 12 : mach was : next i
Oder
For each ws in thisworkbook.sheets : mach was : next
Da die for...next -Schleife nicht funktioniert, must du sie durch die genannte for ... each - Schleife ersetzen. Als Zusatz ist notwendig:
If ws.name <> "Result" thenn
der Code
End if
Mfg
Kannst du mir den Code möglicherweise aktualisieren ? ;)
Registriert seit: 06.12.2015
Version(en): 2016
Hallo,
Nein, ich werde den Code nicht aktualisieren. Ich nutze ein Tablet für den Besuch hier im Forum, d.h. ich muss alle Code von Hand vom Pc übertragen.
Ich verstehe das Forum als Hilfe zur Selbsthilfe, etwas Eigenleistung zum Anpassen bzw debugging ist da meistens notwendig.
Ansonsten gibt es noch professionelle Excel-Entwickler, die gerne ein rund-um-sorglos-Paket erstellen.
Mfg
Registriert seit: 14.04.2014
Version(en): 2003, 2007
Hallo,
den von mir eingestellten Code "aktualisieren" mit folgendem austauschen.
Code: Sub aktualisieren()
Dim i As Long
Dim lngA As Long, lngZ As Long
Dim lngL As Long
Dim strSuch As String
Sheets("Gesamtübersicht").Select 'falls mal versehentlich aus einer anderen Tabelle heraus aufgerufen wurde
strSuch = "prüfen" 'gesuchter Wert
Range("C1").CurrentRegion.Offset(1, 0).ClearContents
Range("AA1").CurrentRegion.Clear
lngZ = 2
Application.ScreenUpdating = False
For i = 1 To Sheets.Count
If Sheets(i).Name <> ActiveSheet.Name Then
With Sheets(i)
lngA = Application.CountIf(Sheets(i).Columns("E"), strSuch)
If lngA > 0 Then
Range("AA1") = Range("D1")
lngL = .Cells(.Rows.Count, 3).End(xlUp).Row
Range("AA2") = strSuch
.Range("C1:J" & lngL).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
"AA1:AA2"), CopyToRange:=Range("AB1:AI1"), Unique:=False
Range("AB2:AI" & lngA + 1).Copy Range("B" & lngZ)
lngZ = lngZ + lngA
End If
End With
End If
Next i
Range("AA1").CurrentRegion.Clear
Application.ScreenUpdating = True
End Sub
Es sollten keine Spaltenüberschriften gleich benannt sein.
Anbei Deine Beispieldatei mit dem angepasstem Code.
MsOfficeFrage.xlsm (Größe: 62,03 KB / Downloads: 2)
Gruß Atilla
Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:1 Nutzer sagt Danke an atilla für diesen Beitrag 28
• excelgirl
Registriert seit: 13.04.2014
Version(en): 365, 2019
Hallo,
ich würde es so machen:
Code: Option Explicit
Private Sub worksheet_activate()
Dim loA As Long
Dim loLetzte As Long
Dim loLetzte2 As Long
Dim rng As Range
Dim wks As Worksheet
loLetzte2 = 7
Set wks = Sheets("Gesamtübersicht")
wks.Range("C:J").Clear
Application.ScreenUpdating = False
For loA = 1 To Sheets.Count
If Sheets(loA).Name <> "Gesamtübersicht" Then
With Sheets(loA)
loLetzte = .Cells(Rows.Count, 3).End(xlUp).Row
If loLetzte < 7 Then loLetzte = 7
Set rng = .Range("C7:J" & loLetzte)
rng.Copy wks.Cells(loLetzte2 + 1, 3)
loLetzte2 = wks.Cells(Rows.Count, 3).End(xlUp).Row
If loLetzte2 < 7 Then loLetzte2 = 7
End With
End If
Next
Set rng = wks.Range("C7:J" & loLetzte2)
Range("C8") = rng.Sort(Range("E8"), xlDescending, Range("c8"), , xlAscending)
With Range("E8:E9999")
.Value = .Value
End With
loLetzte2 = Cells(Rows.Count, 5).End(xlUp).Row + 1
Range("C" & loLetzte2 & ":J900000").Clear
Application.ScreenUpdating = True
End Sub
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Registriert seit: 14.04.2014
Version(en): 2003, 2007
Hallo Edgar,
keine schlechte Idee aber
1. vielleicht wäre es sinnvoll, vorher mit Zählenwenn() zu prüfen, ob überhaupt ein Treffer zu erwarten ist,
2. sollte auch geprüft werden ob genügend Zeilen vorrätig sind.
Gruß Atilla
Registriert seit: 13.04.2014
Version(en): 365, 2019
Hallo atilla,
kann man machen:
Code: Option Explicit
Private Sub worksheet_activate()
Dim loA As Long
Dim loLetzte As Long
Dim loletzte2 As Long
Dim rng As Range
Dim wks As Worksheet
loletzte2 = 7
Set wks = Sheets("Gesamtübersicht")
wks.Range("C:J").Clear
Application.ScreenUpdating = False
For loA = 1 To Sheets.Count
If Sheets(loA).Name <> "Gesamtübersicht" Then
If Application.WorksheetFunction.CountIf(Sheets(loA).Range("E:E"), "prüfen") <> 0 Then
With Sheets(loA)
loLetzte = .Cells(Rows.Count, 3).End(xlUp).Row
If loLetzte < 7 Then loLetzte = 7
Set rng = .Range("C7:J" & loLetzte)
rng.Copy wks.Cells(loletzte2 + 1, 3)
loletzte2 = wks.Cells(Rows.Count, 3).End(xlUp).Row + 1
If loletzte2 < 7 Then loletzte2 = 7
If loletzte2 > 60000 Then
sortieren
loletzte2 = wks.Cells(Rows.Count, 3).End(xlUp).Row + 1
End If
End With
End If
End If
Next
sortieren
Application.ScreenUpdating = True
End Sub
Sub sortieren()
Dim wks As Worksheet
Dim rng As Range
Dim loLetzte As Long
Set wks = Sheets("Gesamtübersicht")
loLetzte = Cells(Rows.Count, 5).End(xlUp).Row
Set rng = wks.Range("C7:J" & loLetzte)
rng.Sort key1:=Range("E7"), order1:=xlDescending, key2:=Range("c7"), order2:=xlAscending
With Range("E7:E9999")
.Value = .Value
End With
loLetzte = Cells(Rows.Count, 5).End(xlUp).Row + 1
Range("C" & loLetzte & ":J900000").Clear
End Sub
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
|