Använda SUM i ett makro

January 22

Bob har ett behov av att använda funktionen SUMMA i ett makro för att finna summan av alla värden i en kolumn. Problemet är att antalet celler som skall summeras kommer att variera; för en körning av makro det kunde vara 100 celler, medan på nästa kan det vara 300 och på tredje bara 25.

För det första är det lätt att använda de flesta kalkylbladsfunktioner (t.ex. SUM) inifrån ett makro. Allt du behöver göra är att inleda funktionsnamnet med "Application.WorksheetFunction." eller helt enkelt "WorksheetFunction." Alltså, om du vet att varje körning av makrot kommer att kräva sammanräkning A1: A100, sedan A1: A300, och slutligen A1: A25, kan du använda ett makro så här:

Public Sub Sum_Demo ()
Dim myRange
Dim Resultat
Dim Kör As Long

För körning = 1 till 3
Välj ärende Run
Fall 1
myRange = Worksheets ("Blad1"). Range ("A1", "A100")
Fall 2
myRange = Worksheets ("Blad1"). Range ("A1", "A300")
Fall 3
myRange = Worksheets ("Blad1"). Range ("A1", "A25")
End Select
Resultat = WorksheetFunction.Sum (myRange)
Range ("B" & Run) = Resultat
Nästa Run
End Sub

Detta makro använder en för. . . Nästa slinga för att specificera olika intervall av celler som ska summeras. Den använder sedan SUM kalkylbladsfunktionen att tilldela summan till Resultat variabeln, vilket är (äntligen) instoppad i en cell i kolumn B. Resultaten från den första körningen sätts i B1, den andra i B2, och den tredje i B3 .

Även denna makrot kanske inte vara så nyttigt, det visar flera hjälp tekniker, såsom hur man definierar ett namngivet område, hur man använder funktionen SUMMA, och hur man stoppa summan i en cell. Vad makrot inte gör är att visa hur man väljer ett variabelt antal celler som skall summeras. För att göra detta, är det bäst att förlita sig på slutmetoden objektet Range. Följande kod linjen visar hur du kan stoppa summan av intervallet börjar vid A1 och sträcker sig till strax innan den första tomma cellen i kolumnen:

myRange = ActiveSheet.Range ("A1", Range ("A1"). End (xlDown))
Range ("B1") = WorksheetFunction.Sum (myRange)

Observera att en rad (myRange) definieras som början med A1 och sträcker sig genom oavsett End metoden returnerar. Detta summeras sedan och stoppade in B1.

ExcelTips är din källa för kostnadseffektiv Microsoft Excel utbildning. Detta tips (3217) gäller för Microsoft Excel 97, 2000, 2002, och 2003. Du kan hitta en version av detta tips för menyfliksområdet i Excel (Excel 2007 och senare) här: Använda SUM i ett makro.