Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
ID tematu: 70206 Skopiuj do schowka 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 Skopiuj do schowka
 
 
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 Skopiuj do schowka
 
 
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?
Kod:
ws.Name <> "Razem"

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 Skopiuj do schowka
 
 
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 Skopiuj do schowka
 
 
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 Skopiuj do schowka
 
 
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 Skopiuj do schowka
 
 
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 Skopiuj do schowka
 
 
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 Skopiuj do schowka
 
 
zbysiomysio 
Exceloholic


Wersja: Win Office 2003
Posty: 211
Wysłany: 22-02-2021, 06:58   

Dzięki. Kod działa
ID posta: 400820 Skopiuj do schowka
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
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

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.marketingNET.pl

Archiwum

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