Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Excel Makro für gesamte Spalte anwenden

Excel Makro für gesamte Spalte anwenden
31.05.2020 11:01:25
Charleen
Guten Tag,
ich möchte gerne ein Makro erstellen, welches dann einen Wert kopiert, nach diesem filtert, eine Summe bildet, diesen in die andere Arbeitsmappe einträgt und zusätzlich das älteste Datum kopiert und einträgt.
Dies sieht als Makro welches ich erstellt habe folgendermaßen aus:

Sub Makro1()
' Makro1 Makro
Range("A2").Select
Selection.Copy
Sheets("SAP").Select
ActiveSheet.Range("$A$1:$C$66").AutoFilter Field:=1, Criteria1:="=A", _
Operator:=xlOr, Criteria2:="=A Ergebnis"
Range("B7").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Auswertung").Select
Range("B2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("SAP").Select
Range("C2").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Auswertung").Select
Range("C2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A3").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("SAP").Select
ActiveSheet.Range("$A$1:$C$66").AutoFilter Field:=1, Criteria1:=Array( _
"A Ergebnis", "B", "B Ergebnis", "C Ergebnis", "D Ergebnis", "E Ergebnis", _
"F Ergebnis", "G Ergebnis", "H Ergebnis", "I Ergebnis", "J Ergebnis"), Operator:= _
xlFilterValues
Range("B13").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Auswertung").Select
Range("B3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("SAP").Select
Range("C8").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Auswertung").Select
Range("C3").Select
ActiveSheet.Paste
Range("C9").Select
End Sub

Das Makro soll aus dem Reiter Auswertung nach jedem Wert in der Zeile Name filtern und dann hier die Summe der Menge jeweils im Reiter Auswertung eintragen. Danach soll noch das jeweils älteste Datum eingetragen werden.
Meine Frage wäre nun:
Wie bekomme ich es hin, dass ich das Makro nur beispielhaft für eine Zelle aufzeichne, also für den Namen A, aber das Makro dem Muster für alle anderen Namen ebenfalls folgt, also den Prozess auch für B, C, D, E, ... durchführt?

Angehängt finden Sie die beispielhafte Excel-Datei.
https://www.herber.de/bbs/user/137902.xlsx
Vielen Dank und viele Grüße
Charleen
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel Makro für gesamte Spalte anwenden
31.05.2020 12:24:12
Hajo_Zi
Hallo Charleen,
das Makro konnte ich in Deiner Datei nicht finden, was wohl daran liegt das bei mir XLSX kein MNakrop enthält.
Welche Version benutzt Du die in XLSX ein Makro hat?

AW: Excel Makro für gesamte Spalte anwenden
31.05.2020 12:35:52
Charleen
Hallo Hajo,
ich habe die Datei ohne das Makro gespeichert...
Gruß
Charleen
Anzeige
AW: Excel Makro für gesamte Spalte anwenden
31.05.2020 13:02:04
AlterDresdner
Hallo Charleen,
mit dem Makro
Sub Auswertung()
Const Erster = "A" 'erster Buchstabe
Const Letzter = "K" 'letzter Buchstabe
Const Anzahl = 5 'Anzahl der Einträge
Dim zeile As Long, Zielzeile As Long, Buch As Long
Dim Aus As Object
Set Aus = Sheets("Auswertung")
Zielzeile = 2
zeile = 2
For Buch = Asc(Erster) To Asc(Letzter) 'alle Buchstaben
With Sheets("SAP")
Aus.Cells(Zielzeile, 1) = Chr(Buch)
Aus.Cells(Zielzeile, 2) = .Cells(zeile + Anzahl, 2)
Aus.Cells(Zielzeile, 3) = .Cells(zeile, 3)
Aus.Cells(Zielzeile, 3).NumberFormat = .Cells(zeile, 3).NumberFormat
Zielzeile = Zielzeile + 1
zeile = zeile + Anzahl + 1
End With
Next Buch
End Sub

sollte Dein Ziel zu erreichen sein. ggfls müssen die Konstanten angepasst werden.
PS: Die Angabe des Makros im Text und die Datei als .xlsx finde ich ganz sinnvoll,
nicht jeder öffnet gern unbekannte .xlsm...
Gruß der ALteDresdner
Anzeige
AW: Excel Makro für gesamte Spalte anwenden
31.05.2020 13:18:40
Charleen
Hallo der ALteDresdner,
das makro macht genau das was ich erreichen möchte, jedoch ist die Anzahl der Einträge im Reiter SAP variabel. Es können auch mal 20 oder mehr Einträge je "Name" vorhanden sein. Lässt sich dies auch lösen?
Gruß
Charleen
AW: Excel Makro für gesamte Spalte anwenden
01.06.2020 11:58:27
AlterDresdner
Hallo Charleen,
wenn sich das mit den Konstanten Erster, Letzter und Anzahl nicht regeln lässt,
der nachfolgende Code bestimmt die Anzahl aus "A Ergebnis", das muss dann aber so dastehen.
Sub Auswertung2()
Dim zeile As Long, Zielzeile As Long, Buch As String, Anzahl As Long
Dim Aus As Object
Set Aus = Sheets("Auswertung")
Zielzeile = 2
zeile = 2
With Sheets("SAP")
While Not IsEmpty(.Cells(zeile, 1)) 'alle Buchstaben
Buch = .Cells(zeile, 1)
Aus.Cells(Zielzeile, 1) = Buch
Anzahl = 0
Do
Anzahl = Anzahl + 1
Loop Until .Cells(zeile + Anzahl, 1) = Buch & " Ergebnis"
Aus.Cells(Zielzeile, 2) = .Cells(zeile + Anzahl, 2)
Aus.Cells(Zielzeile, 3) = .Cells(zeile, 3)
Aus.Cells(Zielzeile, 3).NumberFormat = .Cells(zeile, 3).NumberFormat
Zielzeile = Zielzeile + 1
zeile = zeile + Anzahl + 1
Wend
End With
End Sub

Gruß der AlteDresdner
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Excel Makro für die gesamte Spalte anwenden


Schritt-für-Schritt-Anleitung

Um ein Makro zu erstellen, das du auf eine gesamte Spalte in Excel anwenden kannst, folge diesen Schritten:

  1. Makro aufzeichnen: Öffne Excel und gehe auf "Entwicklertools" > "Makro aufzeichnen". Wähle einen Namen für dein Makro und klicke auf "OK".

  2. Aktionen durchführen: Führe die gewünschten Aktionen auf einer Zelle aus (z.B. Formatierung, Berechnung oder Filterung).

  3. Makro stoppen: Klicke auf "Entwicklertools" > "Aufzeichnung beenden".

  4. Makro bearbeiten: Gehe zu "Entwicklertools" > "Visual Basic". Suche das aufgezeichnete Makro im Projektfenster.

  5. Schleife hinzufügen: Um das Makro auf die gesamte Spalte anzuwenden, füge eine Schleife hinzu, die durch die Zeilen iteriert. Hier ist ein Beispiel:

    Sub MakroGesamteSpalte()
       Dim zeile As Long
       For zeile = 1 To 100 ' Ersetze 100 durch die Anzahl deiner Zeilen
           ' Hier kannst du die gewünschten Aktionen einfügen
           Cells(zeile, 1).Value = Cells(zeile, 2).Value ' Beispiel: Kopiere Werte von Spalte B nach A
       Next zeile
    End Sub
  6. Makro speichern: Vergiss nicht, die Datei als .xlsm zu speichern, um das Makro zu behalten.


Häufige Fehler und Lösungen

  • Makro funktioniert nicht auf ganze Spalte: Stelle sicher, dass du die Schleife korrekt implementiert hast. Oftmals wird nur eine Zelle bearbeitet, was zu unerwarteten Ergebnissen führt.

  • Fehlermeldung beim Ausführen des Makros: Überprüfe den Code auf Syntaxfehler oder ob die referenzierten Blätter existieren.

  • Formatierung auf gesamte Spalte anwenden funktioniert nicht: Achte darauf, dass die Formatierung innerhalb der Schleife für jede Zelle festgelegt wird.


Alternative Methoden

Falls du ein Makro nicht verwenden möchtest, kannst du auch folgende Methoden ausprobieren:

  • Excel-Formel auf ganze Spalte anwenden: Schreibe die Formel in die erste Zelle der Spalte und ziehe das Ausfüllkästchen nach unten.

  • Excel-Dropdown auf ganze Spalte anwenden: Wähle die gesamte Spalte aus, gehe zu "Daten" > "Datenüberprüfung" und wähle "Liste" aus.

  • Formatierung auf ganze Spalte anwenden: Wähle die Spalte aus, gehe zu "Start" > "Formatvorlagen" und wähle die gewünschte Formatierung.


Praktische Beispiele

Hier sind einige Anwendungsbeispiele für Makros, die auf die gesamte Spalte angewendet werden:

  1. Summe bilden: Um die Summe einer gesamten Spalte zu berechnen, kannst du folgendes Makro verwenden:

    Sub SummeSpalte()
       Dim gesamt As Double
       gesamt = Application.WorksheetFunction.Sum(Range("A:A"))
       MsgBox "Die Summe der Spalte A ist: " & gesamt
    End Sub
  2. Bedingte Formatierung: Um eine bedingte Formatierung auf die gesamte Spalte anzuwenden, kannst du:

    Sub BedingteFormatierung()
       With Range("A:A").FormatConditions.Add(Type:=xlCellValue, Operator:=xlGreater, Formula1:="=10")
           .Interior.Color = RGB(255, 0, 0) ' Rot für Werte über 10
       End With
    End Sub

Tipps für Profis

  • Verwende Konstanten: Definiere Konstanten für wiederkehrende Werte, um deinen Code übersichtlicher zu gestalten.

  • Vermeide Select und Activate: Direkte Referenzierung der Zellen spart Zeit und Ressourcen.

  • Fehlerbehandlung: Füge Fehlerbehandlungsroutinen ein, um unerwartete Fehler abzufangen.


FAQ: Häufige Fragen

1. Wie kann ich eine Excel-Formel auf die ganze Spalte anwenden?
Du kannst einfach die Formel in die erste Zelle eingeben und dann das Ausfüllkästchen nach unten ziehen, um sie auf die gesamte Spalte anzuwenden.

2. Warum funktioniert mein Makro nicht auf ganze Spalte?
Überprüfe, ob das Makro richtig programmiert ist und dass es keine Fehler im Code gibt, die die Ausführung verhindern.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige