Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

VBA - Sumowanie wart z jednej kol. na podst. drugiej (rozpoznanie końcówki ID)

Maskott 15 Cze 2016 10:48 834 3
  • #1 15 Cze 2016 10:48
    Maskott
    Poziom 2  

    Witam,
    Zmagam się z następującym problemem.
    Posiadam tabelę z ID w kolumnie "A" oraz wartościami w kolumnie "E". ID składa się z 12 cyfr.
    ID główne posiada końcówkę "00" czyli np. 559150001500 (zakończenie "setką"). Podległe im ID mają ten sam układ 10 znaków ale ostatnie dwie liczby się zmieniają np. na 01,02 itd. np. 559150001501, 559150001504…
    Zastanawiam się jakim makrem (funkcją) mogę zsumować wartości z kolumny "E" na podstawie kolumny "A". W taki sposób by zostawić wiersze z głównym ID a do wartości głównych ID dodać te z im podległym i usunąć te wiersze.
    Jest to część makra które muszę stworzyć pod Excela 2007.

    W załączniku uproszczona tabela dla przykładu.

    0 3
  • Pomocny post
    #2 15 Cze 2016 20:55
    marcinj12
    Poziom 40  

    Och, funkcjami całkiem prosto...
    Jeżeli masz zapisany ten numer jako liczbę, wystarczy podzielić go przez 100, odrzucić resztę z dzielenia i pomnożyć przez 100.

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    Jeżeli jako tekst - wykorzystać funkcję
    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    Jeżeli w VBA - odpowiednikami w/w funkcji.

    0
  • #3 16 Cze 2016 09:52
    Maskott
    Poziom 2  

    Dzięki za podpowiedź. To teraz muszę pokombinować z kodem ponieważ w VBA nie ma jako takiej formuły RoundDown.

    Zgodnie ze wskazówkami z googla np. http://www.dbforums.com/showthread.php?997197-RoundUp-RoundDown-in-VBA próbuję użyć:
    Application.WorksheetFunction.RoundDown(Sheets("Arkusz1").Range("A1"),-1)

    Nie wiem czemu nie chce mi zadziałać. Wyskakuje błąd "Expected: ="
    Natomiast dla:
    Application.WorksheetFunction.RoundDown(Sheets("Arkusz1").Range("A1"))
    Błąd "Argument not optional".

    Jakieś sugestie gdzie może leżeć błąd? Bo chyba nie w wersji Excela.

    0
  • #4 16 Cze 2016 10:02
    marcinj12
    Poziom 40  

    Funkcja RoundDown ma dwa argumenty, tak, jak jej odpowiednik w Excelu, przy czym wynik tego zaokrąglenia musisz jakoś wykorzystać - gdzieś przypisać czy coś. Argument powinien wynosić 0, nie -1 (jeśli chcesz przemnożyć to potem przez 100), albo -2, jeśli chcesz ten krok pominąć.

    Natomiast w VBA z dzieleniem bez reszty jest jeszcze prościej, bo można użyć operatora dzielenia całkowitego, który automatycznie odrzuci część po przecinku: a \ b

    0