napisał: ml postów: 23
umieszczony: 2 listopada 2010 20:07
|
|
U mnie wszytko działa
Cytat:' wyliczenie sredniej
dblSrednia = Range("a" & lngIndeksWiersza - 1).Value / (lngIloscPustychWierszy + 1)
W tym fragmencie wyliczana jest średnia, czyli bierze liczbę z kolumny A i dzieli przez liczbę=(ilość wstawianych wierszy +1). Jeżeli tu jest błąd to sprawdź następujące elementy:
1. w kolumnie A muszą być liczby
2. ilość wstawianych wierszy musi być przynajmniej 1
3. jeżeli dwie powyższe uwagi nie pomogą to zamień Value naText
Jeżeli to nie pomoże to załącz plik, bo to jest prosta procedura i nic innego tutaj nie może powodować błędu. |
|
napisał: madsim postów: 2
umieszczony: 2 listopada 2010 16:38
edytowany: 2 listopada 2010 16:39
|
|
ML,
procedura nie dziala i nie chce się skompilować, jakis jest bład w kodzie.
' wyliczenie sredniej
dblSrednia = Range("a" & lngIndeksWiersza - 1).Value / (lngIloscPustychWierszy + 1) |
|
napisał: ml postów: 23
umieszczony: 31 października 2010 13:12
|
|
Witam,
proponuję coś takiego:
Sub subPusteWierszeSrednia()
' wpisane dane sa w pierwszej kolumnie - A i nie ma w niej pustych komorek
' wpisywana srednia jest do drugiej kolumny - B
Dim lngIloscPustychWierszy As Long ' ilosc pustych wierszy do wstawienia
Dim lngIlosctWypelnionychWiersz As Long ' ilosc wypelnionych wiersz w kolumnie A
Dim lngIndeksWiersza As Long ' indeks wiersza
Dim dblSrednia As Double ' wyliczona srednia
lngIloscPustychWierszy = CLng(InputBox("Podaj ilość wierszy do wstawienia:", "PUSTE WIERSZE", 2))
lngIlosctWypelnionychWiersz = Range("A1").End(xlDown).Row
lngIndeksWiersza = 2
Do
' wyliczenie sredniej
dblSrednia = Range("A" & lngIndeksWiersza - 1).Value / (lngIloscPustychWierszy + 1)
Range("B" & lngIndeksWiersza - 1).Value = dblSrednia
'dodanie pustych wierszy
Range("A" & lngIndeksWiersza & ":A" & lngIndeksWiersza + lngIloscPustychWierszy - 1).EntireRow.Insert
' przepisanie sredniej
Range("B" & lngIndeksWiersza - 1).AutoFill _
Destination:=Range("B" & lngIndeksWiersza - 1 & ":B" & lngIndeksWiersza + lngIloscPustychWierszy - 1), _
Type:=xlFillValues
' kolejny krok
lngIndeksWiersza = lngIndeksWiersza + lngIloscPustychWierszy + 1
Loop Until Len(Range("A" & lngIndeksWiersza - 1).Value) = 0
End Sub
Procedura była testowana na arkuszu, który w kolumnie A w wierszach od 1 do 5 miał wartości z przykładu. Wtedy procedura wpisuje dane do kolumny B. Jeżeli dane wejściowe nie są w kolumnie A, to wtedy trzeba w kodzie zamienić A na właściwą kolumnę (literowo) i analogicznie z kolumną B. |
|
napisał: madsim postów: 2
umieszczony: 25 października 2010 12:21
|
|
Witam,
Mam prośbę, potrzebuję makra, które wstawi dowolną ilość pustych wierszy w miejsce każdego (powiedzmy, że dla przykładu 2 nowe) oraz kopiujące wartości poszczególnych komórek do nowych wierszy w raz z liczeniem średniej (jak niżej w przykładzie. Podaję przykładowy plik i poszczególne etapy przetwarzania z efektem końcowym.
plik początkowy:
Lp d1 d2
1 k 23
2 k 435
3 k 6523
4 k 3552
5 k 852
1. (wstawianie pustych wierszy):
Lp d1 d2
1 k 23
2 k 435
3 k 6523
4 k 3552
5 k 852
2. wypełnienie komórek i wstawienie średniej z d2 :
Lp d1 d2 średniad2
1 k 23 7,666666667
1 7,666666667
1 7,666666667
2 k 435 145
2 145
2 145
3 k 6523 2174,333333
3 2174,333333
3 2174,333333
4 k 3552 1184
4 1184
4 1184
5 k 852 284
5 284
5 284
kolumna średnia z d2 to średnia arytmetyczna dla liczby d2 (liczona dla ilości pól z kolumny LP; w przykładzie dla 3, czyli (1+liczba nowo wstawionych wierszy))
Z góry dziękuję za pomoc. |
|
 wstecz 1 dalej  wszystkich stron: 1
|