Sumowanie danych

Witam

Mam napisać program który sumuje dane w kolejnych wierszach z kolumn 2 i 3 i wpisuje wynik do kolumny 3. program ma liczyć dopóki w 1 kolumnie jest opis.

To mój pierwszy program. Nigdy nie miełam styczności z VBA, dlatego proszę o wyrozumiałość.

Napisałam coś takiego:

Sub dodawanie()

Dim wiersz As Long

Dim kolumna As Long

Dim wartość

Dim składnik

Dim suma

Dim skrót

wiersz = 1

kolumna = 1

składnik = Cells(wiersz, kolumna + 1).Value

wartość = Cells(wiersz, kolumna + 2).Value

skrót = Cells(wiersz, kolumna).Value

Do While skrót <> “”

Cells(wiersz, kolumna + 3).Value = suma

If skrót = “” Then

Exit Do

End If

suma = wartość - składnik

Loop

End Sub

Niestety program liczy tylko 1 wiersz i nie przechodzi dalej, nie wiem niestety jak to zapisać. Program po przeliczeniu tego wiersza zawiesza mi cały arkusz. Nie wiem czy użyłam odpowiedniej funkcji. Proszę o pomoc.

Nie zwiększasz wiersza to ci się zapętla. Imo za dużo zmiennych, nie potrzebnie robisz if, A zmiana wartości zmiennych powinna być w pętli (bo będziesz miał ciągle ten sam wynik)

W skrócie (nie testowane):

Sub dodawanie()

  wiersz = 1

  kolumna = 1

  Do While Cells(wiersz, kolumna).Value <> ""

    Cells(wiersz, kolumna + 3).Value = Cells(wiersz, kolumna + 1).Value + Cells(wiersz, kolumna + 2).Value

    wiersz = wiersz +1

  Loop

End Sub

Dzięki działa super o to mi właśnie chodziło. :smiley:

Dodane 28.08.2012 (Wt) 9:08

Mam jeszcze jeden problem dodawanie działa poprawnie, chciałam jeszcze żeby przy następnym dodawaniu kasowało wyniki w pustych teraz wierszach napisałam tak:

Do While Cells(wiersz, kolumna) = “”

Rows(wiersz).Clear

wiersz = wiersz + 1

Loop

ale program się zapętla. Proszę o pomoc.

Dodane 30.08.2012 (Cz) 14:58

wymyśliłam jeszcze taką opcję

Do While Cells(wiersz, kolumna) = “”

Rows(wiersz).Select

Selection.Delete Shift:=xlUp

wiersz = wiersz - 1

Loop

jednak usuwa tylko 1 wiersz o podanym warunku a nie wszystkie. Proszę o pomoc.