Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Kategoria: Kamery IP / Alarmy / Automatyka Bram
Montersi
Kategoria: Akumulatorki / Baterie / Ładowarki

excel - pomoc w sumowaniu danych

PIOOTRaS82 23 Sty 2013 21:16
  • #1 23 Sty 2013 21:16
    PIOOTRaS82
    Poziom 9  

    Witam,
    mam problem zsumowaniem danych w excelu.

    Mam dane zapisane w takiej postaci:
    wiersz1 | bbb | 1 | bbb | 2 | ccc | 3 |
    wiersz2 | ccc | 3 | ccc | 1 | ccc | 1 |

    a chcę uzyskać tak zsumowane dane że w pierwszym wierszu sprawdza ile jest bbb ccc i sumuje ilości, w drugim wierszu robi to samo.
    wiersz1 | bbb | 3 | ccc | 3 |
    wiersz2 | ccc | 5 |


    Arkusz ma b.dużo pozycji (wierszy i kolumn) więc ręczne zrobienie tego odpada.

  • #2 23 Sty 2013 22:01
    Nemonek
    Poziom 26  

    Skorzystaj z funkcji arkusza LICZ.JEŻELI

  • #3 23 Sty 2013 22:33
    PIOOTRaS82
    Poziom 9  

    Funkcja ta sumuje mi nie wartości przy pozycjach bbb i ccc a ilość wystąpienia w wierszu samego "bbb" i "ccc".
    W efekcie dostaje nie

    wiersz1 | bbb | 3 | ccc | 3 |
    wiersz2 | ccc | 5 |

    a coś takiego
    wiersz1 | bbb | 2 | ccc | 1 |
    wiersz2 | ccc | 3 |

  • #5 23 Sty 2013 23:59
    PIOOTRaS82
    Poziom 9  

    Dzięki za linka,
    jednak opisana funkcja "suma iloczynów"
    sprawdza się tylko dla danych sumowanych w kolumnach a ja mam dane grupowane w wierszach :(

  • #6 24 Sty 2013 00:30
    andrefff
    Poziom 36  

    =JEŻELI(DŁ(A1)=0;0;DŁ(A1)-DŁ(PODSTAW(A1;"a";""))) Takie coś?

  • #7 24 Sty 2013 04:36
    dt1
    Moderator - Komputery Serwis

    Ja to widzę przez makro, jakkolwiek do eksperta w tej dziedzinie mi na pewno daleko, więc mój kod na pewno da się porządnie zoptymalizować.

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    Makro działa przy następujących założeniach:
    - pierwsza komórka z danymi to A1, jeśli tabela ma nagłówek to Range("A1").Select na początku makro trzeba zmienić na inny (np B1, jeśli będzie nagłówek o wysokości jednego wiersza). Wypadałoby zmienić wtedy również warunek głównej pętli While maxY > 1 na poprawny (zamiast jedynki wstawić numer wiersza, od którego zaczynają się dane). Jeśli się tego nie zrobi, makro i tak się nie wysypie, ale zrobi kilka zbędnych cykli na końcu.
    - o ile umieszczenie tabeli niżej niż od pierwszego wiersza jest łatwe, nieco więcej trzeba przerobić, jeśli ma się ją przesunąć w prawo.
    - identyfikatory muszą być umieszczone w nieparzystych kolumnach (1, 3, 5, ...), a ich wartości w parzystych komórkach obok nich po prawej (czyli odpowiednio 2, 4, 6...). Makro (aby go za bardzo nie komplikować) nie sprawdza poprawności danych.
    - identyfikatory nie muszą leżeć koło siebie i i tak zostaną dodane (ale wynik nie będzie sortowany - decyduje kolejność odnalezienia poruszając się od lewej strony).
    - wielkość liter w identyfikatorach ma znaczenia (aaa, Aaa i AAA to trzy różne identyfikatory i ich wartości nie będą dodane, chociaż po drobnej poprawce takie funkcjonowanie też byłoby możliwe.

    Makro przetestowałem na drobnym przykładzie pod Excelem 2003, ale nie zagwarantuję, że zadziała poprawnie na konkretnych danych. Przy użyciu na ważnych danych lepiej zrobić kopię zapasową przed użyciem makro. Tak gdyby coś miało nie wyjść ;) Jako że kod powstawał przez pół godziny około 4 nad ranem na pewno jest miejsce na kilka usprawnień, do których zachęcam. Na pewno znajdą się też jakieś drobne (a może i nawet większe) błędy :)

    Załączam przykład, na którym się bawiłem. Oczywiście trzeba zezwolić na wykonywanie makr.

  • #8 24 Sty 2013 23:28
    PIOOTRaS82
    Poziom 9  

    Super robota ale niestety makro to nie działa do końca dobrze.
    Czasem w danym wierszu pomija dane i ich nie sumuje
    np dla
    aaa2 bbb3 aaa1 ccc2
    daje
    aaa3 ccc2 - pomija bbb3

    Szczerze nie mam pojęcia w jaki czemu tak się dzieje i jak można to poprawić :(

  • Pomocny post
    #9 25 Sty 2013 01:16
    dt1
    Moderator - Komputery Serwis

    Spróbuj tej wersji:

    Kod: vb
    Zaloguj się, aby zobaczyć kod

  • #10 25 Sty 2013 01:51
    PIOOTRaS82
    Poziom 9  

    Super - działa idealnie :)

  Szukaj w 4mln produktów
Przeglądaj produkty