Thema Datum  Von Nutzer Rating
Antwort
05.03.2019 08:22:19 Emre
NotSolved
05.03.2019 09:08:33 Gast40369
NotSolved
05.03.2019 09:55:14 Emre
NotSolved
05.03.2019 14:45:34 Emre
Solved
05.03.2019 16:13:21 Ulrich
NotSolved
Blau Select nicht nötig
06.03.2019 07:02:27 Emre
NotSolved
06.03.2019 09:01:56 Ulrich
NotSolved

Ansicht des Beitrags:
Von:
Emre
Datum:
06.03.2019 07:02:27
Views:
463
Rating: Antwort:
  Ja
Thema:
Select nicht nötig

Hallo Ulrich,

 

kann ich alle Selects weglassen?

Vllt hast du Zeit und Lust mal über das Makro zu schauen und mir zu sagen was ich noch weglassen kann (Selects).

Sub Differenzprotokollbearbeiten()

Dim letzteZeile As Long

    letzteZeile = Cells(Rows.Count, 2).End(xlUp).Row
'
' Differenzprotokollbearbeiten Makro
'

' 1. Zeile 1 mit Filter versehen
' 2. Alle Zeilen entfernen, wenn in Spalte AF eine 1 drinsteht
Application.ScreenUpdating = False
    Application.DisplayAlerts = False
With ActiveSheet
.Range("A1").AutoFilter Field:=30, Criteria1:="1"
.Rows(1).Hidden = True
.UsedRange.SpecialCells(xlCellTypeVisible).Delete
.Rows(1).Hidden = False
.AutoFilterMode = False
End With
Application.DisplayAlerts = True
Application.ScreenUpdating = True

' 3. Spalte A markieren und eine Spalte hinzufügen und mit Überschrift Kennzahl versehen
Columns("A:A").Insert Shift:=xlToRight
    Range("A1") = "Kennzahl"

' 4. Pivottabelle erstellen ("Zellenbeschriftungen = Filiale / Summe von VK diff ges.")
        Cells.Select
        Sheets.Add
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "Daten1!A1:AE" & letzteZeile, Version:=xlPivotTableVersion14).CreatePivotTable _
        TableDestination:="Tabelle1!R3C1", TableName:="PivotTable", _
        DefaultVersion:=xlPivotTableVersion14
    Sheets("Tabelle1").Select
    With ActiveSheet.PivotTables("PivotTable").PivotFields("Filiale")
        .Orientation = xlRowField
        .Position = 1
    End With
    ActiveSheet.PivotTables("PivotTable").AddDataField ActiveSheet.PivotTables( _
        "PivotTable").PivotFields("VK diff ges."), "Summe von VK diff ges.", xlSum
    ActiveCell.Columns("A:B").EntireColumn.Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    ActiveCell.Rows("1:2").EntireRow.Select
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlUp
    ActiveCell.Rows("1:1").EntireRow.Select
' 5. Aufsteigend sortieren in Spalte "Summe von VK diff ges."
    Selection.AutoFilter
    ActiveCell.Offset(4, 1).Range("A1").Select
    ActiveWorkbook.Worksheets("Tabelle1").AutoFilter.Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Tabelle1").AutoFilter.Sort.SortFields.Add Key:= _
        ActiveCell.Offset(-1, 0).Range("A1"), SortOn:=xlSortOnValues, Order:= _
        xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Tabelle1").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    
Worksheets("Tabelle1").Rows(2).Delete

' 6. In Spalte C zu jeder Filiale eine Kennzahl hinzufügen.
Dim Ende As Long

With ActiveSheet
  
  .Range("C2") = "1"
  .Range("C3") = "2"
   
  Ende = Cells(Rows.Count, 2).End(xlUp).Row
  
  .Range("C2:C3").AutoFill Destination:=Range("C2:C" & Ende), Type:=xlFillDefault
  
End With
      Sheets("Daten1").Select
Dim z As Long
Dim lz As Long
Dim s As Integer
  
lz = Cells(Rows.Count, 2).End(xlUp).Row
If Cells(Rows.Count, 2) <> "" Then lz = Rows.Count
 
On Error Resume Next
For z = 2 To lz
For s = 3 To 3
        Cells(z, 1).Value = WorksheetFunction.VLookup(Cells(z, 6).Value, Range("Tabelle1!A:C"), s, False)
        If Err.Number > 0 Then
            Cells(z, 1).Value = 0
            Err.Clear
        End If
    Next s
Next z

' 8. Aufsteigend sortieren in Spalte A ("Kennzahl")
    Selection.AutoFilter
    ActiveWorkbook.Worksheets("Daten1").AutoFilter.Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Daten1").AutoFilter.Sort.SortFields.Add Key:=Range _
        ("A1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("Daten1").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
' 10.  Teilergebnisse in Spalten N (14) (VK diff ges.) und Z (26) (Diff nach Verbuchung) einfügen. Gruppieren nach: "Filiale" / Unter Verwendung von: "Summe"
    Cells.Select
    Application.CutCopyMode = False
    Selection.Subtotal GroupBy:=6, Function:=xlSum, TotalList:=Array(14, 26), _
        Replace:=True, PageBreaks:=False, SummaryBelowData:=True
' 11. Gruppierungen entfernen
    Selection.ClearOutline
' 12. Spalte G markieren und eine Spalte einfügen.
    Columns("G:G").Insert Shift:=xlToRight
' 13. Mit der Formel Links nur die 8 Stelligen Filialnummern anzeigen lassen. Dann werden die Filialnummern kopiert und als Werte in Spalte F (6) eingefügt.
'     Dies soll dazu dienen, das Wort "Ergebnis" in den Ergebniszeilen (Teilergebnis) zu entfernen.
    Range("G2").Select
    ActiveCell.FormulaR1C1 = "=+LEFT(RC[-1],8)"
    Range("G2").AutoFill Destination:=Range("G2:G" & letzteZeile)
    Range("G2:G" & letzteZeile).Copy
    Range("F2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
' 14. Spalte G wieder entfernen
    Columns("G:G").Select
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlToLeft
' 15. Nach Ergebniszeilen Filtern (in Spalte D (4) nach Leere Filtern)
' 16. Per Sverweis die Kennzahlen den Filialen in den Ergebniszeilen zuordnen.
  
lz = Cells(Rows.Count, 2).End(xlUp).Row
If Cells(Rows.Count, 2) <> "" Then lz = Rows.Count
 
On Error Resume Next
For z = 2 To lz
For s = 3 To 3
        Cells(z, 1).Value = WorksheetFunction.VLookup(Cells(z, 6).Value, Range("Tabelle1!A:C"), s, False)
        If Err.Number > 0 Then
            Cells(z, 1).Value = 0
            Err.Clear
        End If
    Next s
Next z

' 19. Spalten N/V/Z als Währung formatieren
    Range("N:N,V:V,Z:Z").Select
    Range("Z1").Activate
    Selection.NumberFormat = "#,##0.00 $"
' 20. Unnötige Spalten entfernen
    Columns("AB:AG").Delete Shift:=xlToLeft
    Range("A1").Select
End Sub

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
05.03.2019 08:22:19 Emre
NotSolved
05.03.2019 09:08:33 Gast40369
NotSolved
05.03.2019 09:55:14 Emre
NotSolved
05.03.2019 14:45:34 Emre
Solved
05.03.2019 16:13:21 Ulrich
NotSolved
Blau Select nicht nötig
06.03.2019 07:02:27 Emre
NotSolved
06.03.2019 09:01:56 Ulrich
NotSolved