Verwenden von SUM In einem Makro (Microsoft Excel)
Bob muss die SUMME-Funktion in einem Makro verwenden, um die Summe aller Werte in einer Spalte zu ermitteln. Das Problem ist, dass die Anzahl der zu summierenden Zellen variiert. Für einen Lauf des Makros könnten es 100 Zellen sein, für den nächsten 300 und für den dritten nur 25.
Erstens ist es einfach, die meisten Arbeitsblattfunktionen (wie z. B. SUM) innerhalb eines Makros zu verwenden. Sie müssen dem Funktionsnamen lediglich „Application.WorksheetFunction“ voranstellen. oder einfach „WorksheetFunction“. Wenn Sie also wissen, dass für jeden Lauf des Makros A1: A100, dann A1: A300 und schließlich A1: A25 summiert werden müssen, können Sie ein Makro wie das folgende verwenden:
Public Sub Sum_Demo() Dim myRange Dim Results Dim Run As Long For Run = 1 To 3 Select Case Run Case 1 myRange = Worksheets("Sheet1").Range("A1", "A100") Case 2 myRange = Worksheets("Sheet1").Range("A1", "A300") Case 3 myRange = Worksheets("Sheet1").Range("A1", "A25") End Select Results = WorksheetFunction.Sum(myRange) Range("B" & Run) = Results Next Run End Sub
Dieses Makro verwendet ein For. . . Nächste Schleife, um verschiedene Bereiche von zu summierenden Zellen anzugeben. Anschließend wird die SUM-Arbeitsblattfunktion verwendet, um die Summe der Ergebnisvariablen zuzuweisen, die (endgültig) in eine Zelle in Spalte B gestopft wird. Die Ergebnisse des ersten Laufs werden in B1, das zweite in B2 und das dritte in B3 eingegeben .
Obwohl dieses spezielle Makro möglicherweise nicht so nützlich ist, zeigt es verschiedene hilfreiche Techniken, z. B. das Definieren eines benannten Bereichs, die Verwendung der SUMME-Funktion und das Einfügen der Summe in eine Zelle. Das Makro zeigt nicht, wie eine variable Anzahl von zu summierenden Zellen ausgewählt wird. Verwenden Sie dazu am besten die End-Methode des Range-Objekts. Die folgende Codezeile zeigt, wie Sie die Summe des Bereichs ab A1 bis kurz vor die erste leere Zelle in der Spalte füllen können:
myRange = ActiveSheet.Range("A1", Range("A1").End(xlDown)) Range("B1") = WorksheetFunction.Sum(myRange)
Beachten Sie, dass ein Bereich (myRange) so definiert ist, dass er mit A1 beginnt und sich über alles erstreckt, was die End-Methode zurückgibt. Dies wird dann summiert und in B1 gestopft.
_Hinweis: _
Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.
ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.
Dieser Tipp (3217) gilt für Microsoft Excel 97, 2000, 2002 und 2003. Eine Version dieses Tipps für die Multifunktionsleistenschnittstelle von Excel (Excel 2007 und höher) finden Sie hier: