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.

Excel- automatyczne kopiowanie większej zawartości pól

JaroFon 17 Cze 2011 08:16 11678 64
  • #31 17 Cze 2011 08:16
    adamas_nt
    Moderator Programowanie

    Najprościej zastosować formatowanie warunkowe. Ważne jest ustawienie reguł we właściwej kolejności. Np

    Excel- automatyczne kopiowanie większej zawartości pól

  • #32 17 Cze 2011 17:15
    JaroFon
    Poziom 23  

    Niestety ale takie formuły nie za bardzo działają tak jak bym chciał. Formuła z literą B działa OK. Jednak reszta znaków wyświetla się w białych polach na formatowany kolor a w szarych polach na czarno, tak jak w poniższym pliku. Kiedy zacznę wstawiać cyfry to poprzednie litery zmieniają kolor na czarny. Może powiem jeszcze raz co zamierzam osiągnąć. W górnej linijce wzoru systemu gdzie w listach rozwijanych są nadgodziny (cyfry), w białych polach mają się wyświetlać na czarno a w szarych na czerwono, w dolnej linijce wszystkie litery (oprócz litery B) i znak paragrafu w każdym polu ma się wyświetlać na niebiesko, litera B w każdym polu ma się wyświetlać na czerwono, znak minusu w każdym polu ma się wyświetlać na czarno, cyfry w białych polach mają się wyświetlać na czarno a w szarych na czerwono. W mojej starej wersji arkuszu z szychtownicą formuły mi działają ale tych formuł jest od groma, a w Twojej w tym co mi zaproponowałeś jest ich minimum

  • #33 17 Cze 2011 17:24
    JaroFon
    Poziom 23  

    Jeszcze jedno. Muszę zwrócić uwagę na pola szare. Pola szare w pierwszym wzorze "-" zmieniają swoje miejsca automatycznie w zależności od zadanej daty w kalendarzu a pozostałych wzorach pola szare będę zmieniał ręcznie, i formuły musiały by brać to pod uwagę

  • #34 17 Cze 2011 19:49
    adamas_nt
    Moderator Programowanie

    W takim razie trzeba przejść na makra. W przypadku "-" testując dzień tygodnia, w pozostałych kolor wypełnienia (interior.colorindex)...

  • #35 17 Cze 2011 20:47
    JaroFon
    Poziom 23  

    Jak już wspomniałem da rade to zrobić na formatach bo ja właśnie do tej pory korzystam z takiej opcji jednak za każdym razem na początku każdego miesiąca to żmudna praca żeby zrobić nowe wzory systemów no i tych formatów jest naprawdę sporo, a chciałem se to trochę ułatwić. Czy możesz mi pomóc w utworzeniu odpowiedniego makra?

    Dodano po 41 [minuty]:

    no i znalazłem kolejny błąd w kopiowaniu ostatniej wersji kodu. Kopiowanie poszczególnych systemów od A do F przebiega bezbłędnie jak również ich zmiana, ale jak skopiuję system "-" to jak w miejsce tego systemu chcę wkleić inny to system"-" (szare pola) pozostają a dodają się szare pola z innego systemu który wkleję. No i znowu jest tak samo jak poprzednio, po zmianie systemu na inny usuwają się wszystkie aktualne wpisy a chciałbym żeby te wpisy pozostawały

    Dodano po 7 [minuty]:

    W tym kodzie kopiowanie systemów działa poprawnie jedynie nie kopiuje rozwijanych list

    Kod: vb
    Zaloguj się, aby zobaczyć kod

  • #36 17 Cze 2011 20:57
    adamas_nt
    Moderator Programowanie

    Coś musisz wyjaśnić: Cały czas wydawało mi się, że kolory i wartości uzupełniasz we wzorcach (w tabeli u dołu arkusza) i gotowe kopiujesz do górnej tabeli. Czy jest inaczej?

    Ten błąd to wynik kopiowania formatowania warunkowego. Przy zastosowaniu makr (rezygnacji z cf) zniknie.

  • #37 17 Cze 2011 21:12
    JaroFon
    Poziom 23  

    Niestety ale ja tych makr nie kumam zupełnie i nie znam się na tym. Zauważyłem tylko że powyższy kod działa poprawnie ale jedynie nie kopiuje rozwijanych list z ze wzorów. Było by dobrze gdyby ten kod był taki sam jak ten powyższy ale żeby dodać do niego jedynie kopiowanie tych rozwijanych list. Jeśli chodzi o te formaty o których pisaliśmy to mogę se to darować. Zawsze mogę to robić ręcznie jak do tej pory na początku każdego miesiąca, byle to kopiowanie działa do końca poprawnie :)

  • #38 17 Cze 2011 21:35
    adamas_nt
    Moderator Programowanie

    No, trochę z tym roboty...
    Makra formatowania działają tylko we wzorcach. Pierwsze (wzorzec dla "-") sprawdza dzień tygodnia, pozostałe kolor wypełnienia. Wyrzuciłem reguły formatowania warunkowego. Makra testowe dodałem do przycisków, a nóż się przydadzą.

  • #39 17 Cze 2011 21:54
    JaroFon
    Poziom 23  

    O, tu już kopiowanie wzorów działa poprawnie. Gorzej z tymi kolorami liter i cyfr. Ale jak już napisałem jeśli to jest tak skomplikowane to będę to robił ręcznie. Ale czy można zrobić jeszcze to co kiedyś pisałem, tz. że jeśli w trakcie miesiąca pracownikowi zmieni się system to chciałbym żeby po zmianie tego systemu pozostały dotychczas wprowadzone dane. Podałeś mi ten kod żebym go podmienił, czy teraz można zrobić tak samo?

    Kod: vb
    Zaloguj się, aby zobaczyć kod

  • #40 17 Cze 2011 23:23
    adamas_nt
    Moderator Programowanie

    Pozmieniałem trochę:
    1) Wpisanie symbolu do pustej bez zmian, wkleja wartości+formaty
    2) Zmiana symbolu (Np było "A", zmieniamy na "B") kopiuje tylko formaty, wartości pozostają bez zmian

    Podmiana grafiku: Klawisz [Del] czyścimy, wpisanie symbolu wkleja wartości+formaty (jak w pkt.1)

    3) Przycisk [Przemaluj Grafik] działanie: Ustaw kursor na komórkę z symbolem grafiku przeznaczonym do przemalowania, naciśnij przycisk. Działa tylko dla symboli <> "-".

    Teraz wypadałoby to wszystko uporządkować, zabezpieczyć przed błędami. Pewnie dałoby się jeszcze co nieco zautomatyzować...

  • #41 18 Cze 2011 23:20
    JaroFon
    Poziom 23  

    Ogólnie wszystko działa poprawnie oprócz systemu "-" . We wzorze działa OK jednak po skopiowaniu już nie. Jednak zrezygnuję z tego sytemu i zrobię go ręczne jak pozostałe wtedy będzie OK. Jeśli chodzi o przyciski to za bardzo ich nie kumam. Ogólnie to przyciski nie mają działać na wzorach (bo tam nie będzie żadnych danych) tylko w miejscu gdzie będą kopiowane wzory.

  • #42 20 Cze 2011 17:20
    JaroFon
    Poziom 23  

    Witam ponownie. Tym razem pominę temat kopiowania wzorów sytemu (ale do tego tematu jeszcze wrócę) a chcę poruszyć temat innego kopiowania. W ostatnim pliku jaki wrzuciłem w dolnych zakładkach są trzy arkusze którymi chciałbym się zająć. Jest tam zakładka o nazwie "Pracownicy". Arkusz ten posiada cztery różne listy pracowników a dokładnie listy dwóch kierowników i dwóch firm, a jeszcze dokładniej jeden kierownik posiada dwie firmy. Czy jest taka możliwość aby z tych czterech list Excel automatycznie zrobił dwie listy zespojone ze sobą? Dokładnie chodzi mi o coś takiego żeby dwie listy pracowników kierownika 1 zostały skopiowane do zakładki "PracownicyKierownik1" utworzona jedna lista i posortowana alfabetycznie? I tak samo z "Kierownikiem 2". Na chwilę obecną każda z list pracowników posiada 10 pracowników ale na dzień dzisiejszy te cztery listy będą posiadały 212 pracowników. Takie kopiowanie musi brać pod uwagę to że lista pracowników będzie edytowana w przypadku zwolnień lub przyjęć więc takie edycje również musiały by następować automatycznie w dwóch pozostałych listach.

  • #43 21 Cze 2011 08:46
    adamas_nt
    Moderator Programowanie

    JaroFon napisał:
    Dokładnie chodzi mi o coś takiego żeby dwie listy pracowników kierownika 1 zostały skopiowane do zakładki "PracownicyKierownik1" utworzona jedna lista i posortowana alfabetycznie? I tak samo z "Kierownikiem 2"
    W tej formie jest to dość proste, pierwsza z prawej nagłówków tabel to liczba. Czy tak zostanie w finalnej wersji?

  • #44 21 Cze 2011 17:04
    JaroFon
    Poziom 23  

    Jeśli chodzi o finalną wersję to jest mi to obojętne, byle listy będą połączone i posortowane alfabetycznie. Dodam jeszcze że te cztery listy pracowników nie są jeszcze kompletne. Do list muszą byś dołączone jeszcze dwie dodatkowe kolumny które będą zawierały dodatkowe dane związane z danym pracownikiem. Oczywiście sortowanie alfabetyczne musi odpowiednio uporządkować wszystkie dane jakie zostaną przypisane każdemu z pracowników

  • #45 21 Cze 2011 22:36
    adamas_nt
    Moderator Programowanie

    Wybróbuj (wklej do nowego modułu)

    Kod: vb
    Zaloguj się, aby zobaczyć kod
    Pozostaje posortowanie i dodanie liczby porządkowej. Np formułą =WIERSZ() skopiowaną w dół...

  • #46 22 Cze 2011 17:13
    JaroFon
    Poziom 23  

    W zakładce "Pracownicy" wkleiłem ten kod ale nic się nie dzieje

    Dodano po 16 [minuty]:

    A jeśli chodzi o formułę "=wiersz()" to on działa ale pokazuje aktualny wiersz w jakim znajduje się formuła i przeciągnięcie jej w dół pokazuje mi co drugą cyfrę bo komórki są spajane po dwie, a ja chcę żeby pokazało od cyfry 1 niezależnie w jaki wierszu znajduje się formuła i żeby liczyło po kolei bez względu na to czy komórki są spajane. W sumie takie numerowanie przydało by się do samej szychtownica aby automatycznie numerowało mi liczbę porządkową pracowników kiedy będę usuwał lub dodawał pozycje

    Dodano po 15 [minuty]:

    jeszcze jedno próbowałem już różnych formuł które znalazłem ale w każdym przypadku jest jeden błąd jeśli dodam nową pozycję w środku listy to numeracja już jest błędna bo wtedy mam dwie takie same liczby porządkowe

  • #47 24 Cze 2011 21:55
    JaroFon
    Poziom 23  

    Witam ponownie. Poprawiłem moją szychtownice i niestety utkwiłem w martwym punkcie. W załączonym pliku w szychrownicy dodałem tabele zliczania dniówek dla "Dozoru" i "Pracowników" jak również nadgodziny dla obu grup i szkolenia. Jednak mam problem z dobraniem odpowiednich formuł. Jeśli chodzi o zliczanie szkoleń to niema problemu, formuła działa poprawnie i w przypadku dodania lub ujęcia jakiegokolwiek pracownika formuła również to uwzględni. Jednak mam problem przy zliczaniu dniówek i nadgodzin. Dodałem formułę "=ILE.LICZB" i jest niby ok ale jak dodam nadgodziny w górnym polu wzoru to one również zostaną doliczone jako pełna dniówka a chciałbym żeby pełne dniówki i nadgodziny były zliczane osobno. Jak to można zrobić? W mojej starej szychtownicy z jakiej korzystam do tej pory rozwiązałem to w ten sposób że po prostu do formuły dodawałem odpowiednie pola w ten sposób: "=ILE.LICZB(A1;A3;A5;itd)" ale taka formuła ma jeden mankament że jeśli dodam lub ujmę pracownika z listy do formuła będzie miała błąd ponieważ nie uwzględni tej operacji a to powoduje że muszę poprawiać formuły, formuła musiała by mieć taki styl: "=ILE.LICZB(A1:A5;itd)" ale nie wiem jak zrobić żeby osobno liczyło pełne dniówki a osobno nadgodziny. Proszę o pomoc

  • #49 28 Cze 2011 18:46
    adamas_nt
    Moderator Programowanie

    Nie do końca zrozumiałem co ma być liczone... Czy dumam w dobrym kierunku (D191 na rysunku)?
    Dolną granicę zakresu można próbować określić przez ADR.POŚR i WIERSZ()-3 (w razie czego)...

    Excel- automatyczne kopiowanie większej zawartości pól

  • #50 28 Cze 2011 19:03
    JaroFon
    Poziom 23  

    Właśnie że nie tak ma liczyć, bo to co pokazałeś na screenie dalej liczy tak jak mnie. Formuła jako pełną dniówkę policzyła również te 2,0h nadgodziny jako dniówkę a ja chcę żeby tego nie doliczało ale żeby nadgodziny były zliczane w osobnym polu. A może szło by zrobić jakiś inny sposób wzornika, powiedzmy żeby scalić obydwie komórki i żeby była opcja takiego wpisywania: 1-6 - to jedna pełna dniówka oznaczająca przepracowaną zmianę a wpisanie np. 1,2 żeby pokazało 1 pełną nówkę w dolnym indeksie i dwie nadgodziny w górnym indeksie, no i potem odpowiednie zliczanie tego?

  • #51 28 Cze 2011 19:06
    adamas_nt
    Moderator Programowanie

    Napisz, czy w dobrym miejscu "macam" z tą formułą? Ma to być na zasadzie SUMA.JEŻELI (na rysunku),
    czy LICZ.JEŻELI "=SUMA.ILOCZYNÓW((D20:D188>0)*(MOD(WIERSZ(D20:D188);2)=1))"?
    W przykładzie zsumowałem wszystkie nieparzyste komórki z zakresu D20:D188. Jaki powinien być wynik? Co mamy policzyć?

  • #52 28 Cze 2011 19:35
    JaroFon
    Poziom 23  

    Kurcze stary już kiedyś próbowałem podobną formułe ale za żadne skarby niechciała poprawnie działać, a ta formuła działa idelanie

    Code:
    =SUMA.ILOCZYNÓW((D20:D188>0)*(MOD(WIERSZ(D20:D188);2)=1))

    jaką formułę użyć do zliczania górnych komórek (nadgodzin)?

  • #53 28 Cze 2011 19:38
    adamas_nt
    Moderator Programowanie

    Reszta z dzielenia =0

    Code:
    =SUMA.ILOCZYNÓW((D20:D188>0)*(MOD(WIERSZ(D20:D188);2)=0))

  • #54 28 Cze 2011 20:42
    JaroFon
    Poziom 23  

    Ok druga formuła też działa poprawnie tylko w tym wypadku ta formuła ma sumować sumować nadgodziny

    Dodano po 20 [minuty]:

    Kurcze nie mam pojęcia jak zrobić żeby ten kod sumował nadgodziny a nie zliczał ilość pełnych pól

    Code:
    =SUMA.ILOCZYNÓW((D20:D188>0)*(MOD(WIERSZ(D20:D188);2)=0))


    Dodano po 2 [minuty]:

    O już mam, takie proste :D
    Code:
    =SUMA.ILOCZYNÓW((D20:D188)*(MOD(WIERSZ(D20:D188);2)=0))


    Dodano po 35 [minuty]:

    Została mi jeszcze do zrobienia jedna formuła dla pozycji "Powierzchnia" a w zasadzie to dwie formuły bo w tabeli brakuje jednej pozycji "Powierzchnia H". Krótko, te dwie pozycje mają dodatkowo zliczać dniówki i nadgodziny dokładnie dwóch pracowników. Na przykładzie powyższego arkusza niech to będą pracownicy "82 i 84". Do tej pory w moim dotychczasowym arkuszu na którym pracuje mam to rozwiązane w prosty sposób, dla pozycji "Powierzchnia" mam formułę:
    Code:
    =ILE.NIEPUSTYCH(D183;D187)

    a dla pozycji "Powierzchnia H":
    Code:
    =SUMA(D182;D186)

    Jednak chciałbym żeby to działało na zasadzie wcześniejszych formuł, tz. żeby w przypadku zmian w tabeli pracowników (przyjęcia lub zwolnienia) formuła brała pod uwagę ewentualną zmianę pozycji pracowników "82 i 84". Myślałem o stworzeniu takiej formuły w której można by wpisać pełne nazwy obydwóch pracowników (czyli: "Pracownik 82" i "Pracownik 84") i po wykryciu ich z zakresu:
    Code:
    =B20:B188

    aby zliczało dniówki i nadgodziny należące do tych dwóch pracowników. Czy da się coś takiego zrobić lub w inny działający sposób?

  • #55 28 Cze 2011 21:14
    adamas_nt
    Moderator Programowanie

    Pewnie tak. Próbuj z formułami:

    Code:
    =SUMA.ILOCZYNÓW((B20:B188="Pracownik 82")*(D20:D188>0))+SUMA.ILOCZYNÓW((B20:B188="Pracownik 84")*(D20:D188>0))
    lub
    Code:
    =SUMA.ILOCZYNÓW((B20:B188="Pracownik 82")*(D20:D188))+SUMA.ILOCZYNÓW((B20:B188="Pracownik 84")*(D20:D188))
    


    oraz
    Code:
    =SUMA.ILOCZYNÓW((B20:B188="Pracownik 82")*(D21:D189))+SUMA.ILOCZYNÓW((B20:B188="Pracownik 84")*(D21:D189))
    lub
    Code:
    =SUMA.ILOCZYNÓW((B20:B188="Pracownik 82")*(D21:D189>0))+SUMA.ILOCZYNÓW((B20:B188="Pracownik 84")*(D21:D189>0))


    Wybór zależy od tego czy chcesz sumować, zliczać, górny indeks, czy dolny indeks...

  • #56 28 Cze 2011 21:45
    JaroFon
    Poziom 23  

    Te formuły nie za bardzo dobrze działają. Formuła dla górnego indeksu działa poprawnie:

    Code:
    =SUMA.ILOCZYNÓW((B19:B187="Pracownik 82")*(D19:D187))+SUMA.ILOCZYNÓW((B19:B187="Pracownik 84")*(D19:D187))

    jednak te dla dolnego indeksu działają niepoprawnie

  • #57 28 Cze 2011 22:55
    adamas_nt
    Moderator Programowanie

    Sumy dla Pracownik 82 + Pracownik 84
    Formuły Nr 1 i 3 z poprzedniego postu

    Excel- automatyczne kopiowanie większej zawartości pól

  • #59 29 Cze 2011 21:14
    adamas_nt
    Moderator Programowanie

    Druga tablica musi być przesunięta o jeden wiersz. Spróbuj (liczy niepuste)

    Code:
    =SUMA.ILOCZYNÓW(($B$20:$B$189="Pracownik 82")*(D21:D190>0))+SUMA.ILOCZYNÓW(($B$20:$B$189="Pracownik 84")*(D21:D190>0))

  • #60 29 Cze 2011 22:02
    JaroFon
    Poziom 23  

    OK. Ta formuła jest poprawna tylko wyskakuje błąd kiedy dodam nową pozycje (nowego pracownika) na samym dole tabeli, wtedy w tej formule wyskoczy błąd.

    Dodano po 18 [minuty]:

    Ale problem już rozwiązałem. Dodałem na samym dole dodatkowy wolny rządek, poprawiłem formuły i teraz jest OK jak dodam nową pozycję na samym dole formuły nie mają już błędów. Wielkie dzięki za pomoc