Archiwum tagów: vba

VBA: Sumowanie kolumny danych o zmiennej długości serii

Ku pamięci:

Załóżmy sytuację, że mamy kolumnę danych liczbowych, której długość się zmienia (jakiś wyciąg z bazy danych, pomiary, cokolwiek…) i chcemy dokonać jakiś obliczeń matematycznych na tej serii. Oczywiście zawsze można „przelecieć” wszystko za pomocą pętli aż do znalezienia pustej komórki i przy okazji wyliczać sumę lub średnią. Kod trochę się skomplikuje, gdy będziemy chcieli policzyć coś bardziej zaawansowanego (odchylenie standardowe, kwantyle) – wtedy aż się prosi wykorzystać wbudowane funkcje Excel’a.

Pierwszym krokiem  będzie znalezienie pozycji ostatniego wiersza, który ma w sobie dane. Można to zrobić poniższą funkcją:


Function LastRowPosition() As Long
LastRowPosition = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count
End Function

Następnie musimy się dobrać do odpowiedniej funkcji Excel’a (robimy to poprzez WorksheetFunction.[funkcja] gdzie jako parametr podajemy odpowiednio sprecyzowany zakres danych):


ActiveSheet.Cells(2, 3).Value = WorksheetFunction.Sum(Range("A1:A" &  LastRowPosition))

VBA (Excel 2007) wczytywanie danych z zew. arkusza

Ku pamięci:

Załadowanie nazwy pliku:


Sub LoadExcelFile_Click()
Dim ExcelFile As Variant
ExcelFile = LoadFilename()
Cells(2, 6).Value = ExcelFile
End Sub

dobieranie się do danych wewnątrz dodatkowego arkusza:


Sub CopyData()
Dim ExcelFile As Variant
Dim Excel_Sheet As Variant
Dim DataRange As Range

ExcelFile = Cells(2, 6).Value
Excel_Sheet = "Sheet1"
Set wbk = Workbooks.Open(Filename:=ExcelFile)

Set DataRange = wbk.Worksheets(Excel_Sheet).Range("C455:C468")
DataRange.Copy
'.......... i bawimy się dalej
End Sub