ID tematu: 70206
 |
suma tych samych komórek |
Autor |
Wiadomość |
zbysiomysio
Exceloholic

Wersja: Win Office 2003
Posty: 211
|
Wysłany: 21-02-2021, 15:58 suma tych samych komórek
|
|
|
Witam
Jak powinno brzmieć polecenie sumowania wartości z tej samej komórki np C4 z zakresu kilku arkuszy. Próbowałem tak, ale pokazuje mi błąd:
Kod: | Sheets("Razem").Range("C4") = Sum("1" & ":" & "31").Range("C4").Value |
|
|
 | ID posta:
400798
|
|
|
 |
|
|
|
umiejead
Excel Expert

Wersja: Win Office 2013
Pomógł: 771 razy Posty: 4155
|
Wysłany: 21-02-2021, 16:16
|
|
|
Kod: | Private Sub CommandButton1_Click()
Dim ws As Worksheet, wsR As Worksheet
Set wsR = Sheets("Razem")
For Each ws In ThisWorkbook.Sheets
If ws.Name <> "Razem" Then wsR.Range("C4").Value = _
wsR.Range("C4").Value + ws.Range("C4").Value
Next ws
End Sub |
|
_________________ .
Jak poprawnie opisać problem: http://www.excelforum.pl/...ika-vt59262.htm
Chcesz precyzyjną odpowiedź - zadaj precyzyjne pytanie. |
|
 | ID posta:
400800
|
|
|
 |
|
|
zbysiomysio
Exceloholic

Wersja: Win Office 2003
Posty: 211
|
Wysłany: 21-02-2021, 17:19
|
|
|
Czy to jest kod do umieszczenia w arkuszu? Mi chodzi o kod umieszczony w module. Próbowałem przerobić ale jakoś nie bardzo mi to idzie, bo nie chce liczyć. Jeszcze jedno, bo z tego kodu rozumiem, że liczy sumę z wszystkich arkuszy, które nie noszą nazwę "Razem". Jeżeli są natomiast inne arkusze, to powinienem w poniższej linijce dodać nazwy tych arkuszy po słowie And?
Ostatecznie ten kod przerobiłem j.n., ale nie sumuje mi. Coś źle robię?
Kod: | Sub Makro1()
Dim ws As Worksheet, wsR As Worksheet
Set wsR = Sheets("Razem")
For Each ws In ThisWorkbook.Sheets
If ws.Name <> "Razem" And ws.Name <> "Dane" Then wsR.Range("C4").Value = _
wsR.Range("C4").Value + ws.Range("C4").Value
Next ws
End Sub
|
|
|
|
 | ID posta:
400805
|
|
|
 |
|
|
umiejead
Excel Expert

Wersja: Win Office 2013
Pomógł: 771 razy Posty: 4155
|
Wysłany: 21-02-2021, 18:53
|
|
|
Makro było w arkuszu "Razem" - przeniosłem do Module1, dorzuciłem warunek na arkusz "Dane" - działa bez problemu.
Kod: | Option Explicit
Private Sub Sumuj()
Dim ws As Worksheet, wsR As Worksheet
Set wsR = Sheets("Razem")
For Each ws In ThisWorkbook.Sheets
If ws.Name <> "Razem" And ws.Name <> "Dane" Then _
wsR.Range("C4").Value = wsR.Range("C4").Value + ws.Range("C4").Value
Next ws
End Sub |
Jedna uwaga: kolejne wykonanie kodu dodaje wartości bez uprzedniego zerowania C4 w arkuszu "Razem".
.
sumy.xlsm
|
Pobierz Plik ściągnięto 2 raz(y) 18.4 KB |
|
_________________ .
Jak poprawnie opisać problem: http://www.excelforum.pl/...ika-vt59262.htm
Chcesz precyzyjną odpowiedź - zadaj precyzyjne pytanie. |
|
|
 | ID posta:
400806
|
|
|
 |
|
|
zbysiomysio
Exceloholic

Wersja: Win Office 2003
Posty: 211
|
Wysłany: 21-02-2021, 20:24
|
|
|
Sorry. Rzeczywiście działa. Nawet nie wiem co wcześniej robiłem źle. Do tego zrobiłem pętlę obliczającą w następnych wierszach (chyba dobrze, choć może nieudolnie). Ale nie wiem jak w tej pętli zrobić rozszerzenie również na sąsiednie kolumny, t.j., żeby sumowało również w kolumnie D, E i F.
I jak jeszcze można zrobić, żeby w wierszu 84 w arkuszu "Razem" obliczało sumę z tych samych arkuszy (również w kolumnach C, D, E i F), ale nie z jednego wiersza, tylko od 84 do 115 (czyli w komórce "C84" w arkuszu "Razem" byłaby suma z wierszy C84:C115 z wszystkich arkuszy, a w wierszu 86 byłaby suma z wierszy 117:188. Mój kod wygląda teraz tak:
Kod: | Sub Sumuj()
Dim ws As Worksheet, wsR As Worksheet
Set wsR = Sheets("Razem")
For i = 3 To 82
For Each ws In ThisWorkbook.Sheets
If ws.Name <> "Razem" And ws.Name <> "Dane" Then _
wsR.Range("C" & i).Value = wsR.Range("C" & i).Value + ws.Range("C" & i).Value
Next ws
Next i
End Sub
|
|
|
 | ID posta:
400810
|
|
|
 |
|
|
umiejead
Excel Expert

Wersja: Win Office 2013
Pomógł: 771 razy Posty: 4155
|
Wysłany: 21-02-2021, 20:50
|
|
|
Załącz zrobiony ręcznie plik z oczekiwanym rezultatem.
. |
_________________ .
Jak poprawnie opisać problem: http://www.excelforum.pl/...ika-vt59262.htm
Chcesz precyzyjną odpowiedź - zadaj precyzyjne pytanie. |
|
 | ID posta:
400812
|
|
|
 |
|
|
zbysiomysio
Exceloholic

Wersja: Win Office 2003
Posty: 211
|
Wysłany: 21-02-2021, 21:25
|
|
|
umiejead napisał/a: | Załącz zrobiony ręcznie plik z oczekiwanym rezultatem.
. | Załączam plik z okrojoną liczbą arkuszy. W arkuszu Razem wstawiłem formuły, które chciałbym zastąpić makrem
B3.xls
|
Pobierz Plik ściągnięto 1 raz(y) 312.5 KB |
|
|
 | ID posta:
400813
|
|
|
 |
|
|
Artik


Wersja: Win Office 365
Pomógł: 3091 razy Posty: 10240
|
Wysłany: 22-02-2021, 04:04
|
|
|
Kod: | Sub Sumuj()
Dim wsR As Worksheet
Set wsR = Sheets("Razem")
With wsR.Range("C3:F82")
.FormulaR1C1 = "=SUM('1:8'!RC)"
.Value = .Value
End With
End Sub
| Artik |
_________________ Persistence is a virtue in the world of programming. |
|
 | ID posta:
400819
|
|
|
 |
|
|
zbysiomysio
Exceloholic

Wersja: Win Office 2003
Posty: 211
|
Wysłany: 22-02-2021, 06:58
|
|
|
Dzięki. Kod działa |
|
 | ID posta:
400820
|
|
|
 |
|
|
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum
|
Dodaj temat do Ulubionych Wersja do druku
|
 |
Strona używa plików cookies.
Kliknij tutaj, żeby dowiedzieć się jaki jest cel używania cookies oraz jak zmienić ustawienia cookie w przeglądarce.
Korzystając ze strony użytkownik wyraża zgodę na używanie plików cookies, zgodnie z bieżącymi ustawieniami przeglądarki.
Sprawdź, w jaki sposób przetwarzamy dane osobowe
|