Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

excel makro - numeracja komórek w wierszu arkuszu skoroszycie

bard40 05 Apr 2013 19:04 3606 5
  • #1
    bard40
    Level 2  
    Witam,
    mam problem z automatyczną numeracją w załączonym pliku.Chodzi o to że w arkuszu 1 i kolejnych 31 ( numer arkusza oznacza dzień miesiaca) automatycznie przydzielić numer w komórkach. d166, m166 itd jeżeli wartość w zakresie E175:e290 (itd) jest>0
    formułą nie dam rady- nie można przewidzieć który zakres będzie zerowy myśle ze makro załatwiło by temat ale w tym jestem zielony. Z góry dziękuje za pomoc i sugestie co mógłbym w tym pliku poprawić.
  • #2
    Maciej Gonet
    VBA, Excel specialist
    Dzień dobry,
    Przypuszczalnie to się da zrobić w Excelu, tylko nie wiadomo, co dokładnie ma być w tych komórkach - jaki numer ma być w komórkach D166 i M166 i jak to ma być powiązane z zakresem E175:E290? Czy komórki D166 i M166 mają zliczać wartości niezerowe w zakresie E175:E290, czy je sumować, czy tylko sprawdzać, czy jest jakaś wartość niezerowa? Proszę doprecyzować problem.
  • #3
    bard40
    Level 2  
    witam
    kom d166=1 jeżeli zakres E175:E290>0

    kom M166= 2 jeżeli zakres n175:n290>0 lub pusta gdy zakres jest 0 lub ""

    kom v166=3 jezeli zakres w175:w290>0 lub =2 jezeli kom m166 jest pusta=0

    lub równa 1 jezeli dwie poprzednie d166 i m166 są puste

    z następnymi kom w wierszu podobnie

    numeracja rosnąca od arkusza 1 do 31.

    pozdrawiam
  • #4
    Maciej Gonet
    VBA, Excel specialist
    Dzień dobry,
    Dalej nie rozumiem, co znaczy zakres E175:E290 > 0. Formalnie w Excelu znaczy to, że każda komórka zakresu jest > 0. Czy o to chodziło? Czy chodzi o to, że przynajmniej jedna komórka jest > 0? Czy w komórkach (w tych badanych zakresach) mogą być wartości ujemne?
  • #6
    Maciej Gonet
    VBA, Excel specialist
    Dzień dobry,
    Dziękuję za wyjaśnienie w kwestii sumy liczb nieujemnych. Tak jak myślałem, chodzi o to, żeby co najmniej jedna wartość była niezerowa, więc jeśli liczby są nieujemne, właściwym kryterium jest suma.
    Formuły z ostatniego postu znowu nie rozumiem, bo w tej wersji, którą Pan załączył w komórkach B166 i C166 nie ma żadnych liczb. Ale zostawmy to.
    Z tego co zrozumiałem z poprzedniego Pana postu chodzi o to, aby w arkuszu zainstalować licznik, który w komórkach D166, M166, V166 itd. będzie podawał kolejne numery zestawień, pomijając w numeracji te zestawienia, które zawierają w testowanym zakresie wierszy od 175 do 290 same zera lub puste komórki (co do zakresu to raz u Pana kończy się on na wierszu 290, a innym razem na 292, ja przyjąłem 290, Pan musi to sobie w razie potrzeby skorygować, a jeżeli to jest zmienne, to proponuję użyć nazwy zakresu (powiązanej z adresem względnym lub mieszanym), żeby nie trzeba było korygować wiele razy, tylko raz).
    Przesyłam Panu propozycję rozwiązania, które realizuje taki licznik (w zasadzie są to dwa liczniki, w tym jeden niewidoczny).
    Liczniki widoczne umieszczone są w komórkach D166, M166, V166 itd., liczniki pomocnicze bezpośrednio nad nimi w komórkach sformatowanych tak, aby nie były widoczne (ale trzeba je uwzględniać przy kopiowaniu).
    Formuły wpisałem testowo do arkuszy 1, 2 i 22. Jeśli będą Pana satysfakcjonować proszę je sobie skopiować do pozostałych arkuszy, ewentualnie wprowadzić jakieś poprawki.
    Formuły w kolumnie D są odmienne od pozostałych, gdyż w arkuszu 1 zawierają wartości inicjujące, a w pozostałych arkuszach przeniesienie danych z arkusza o niższym numerze. W pozostałych kolumnach formuły są analogiczne i można je kopiować poziomo, z wyjątkiem kolumny DI, której odległość od kolumny CY jest o 1 większa niż w pozostałych przypadkach i wzory wymagają korekty ręcznej lub przekopiowania z tej samej kolumny w innym arkuszu.
    Aby przenoszenie danych między arkuszami było poprawne w skoroszycie muszą być wszystkie arkusze o nazwach 1 do 31 i tych nazw nie należy zmieniać, natomiast kolejność arkuszy nie ma znaczenia i można wstawiać dodatkowe inne arkusze między te numerowane. Do odczytu nazwy arkusza (w postaci liczby) wykorzystałem prostą funkcję napisaną w VBA i umieszczoną w module Module1.
    W każdym arkuszu było 18 zestawień branych pod uwagę przy analizie i ostatnia kolumna była to kolumna FB. Nie wiem, czy jest tak zawsze, w razie potrzeby adres ostatniej kolumny z danego arkusza musi być wpisany w komórce D165 następnego arkusza w odpowiednim miejscu.