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 - doliczanie dni. Czy to jest możliwe? Jak to zrobić?

miki605 18 Lis 2010 19:47 2352 10
  • #1 18 Lis 2010 19:47
    miki605
    Poziom 9  

    Witam,
    jestem początkujący i poproszę o szczegółowa odpowiedź, mam dość konkretne zadanie mianowicie: jeśli wpiszę w określoną komórkę cyfrę "2" to chciałbym aby następnego dnia pokazała sie cyfra "3" aż dojdzie do momentu np. 10 dni a wtedy zawartość komórki która jest obok tej z liczbą dni została wycięta i przeniesiona np do innego arkusza do konkretnej komórki. Napiszcie proszę czy jest to wogóle wykonalne? Jeśli tak to jak to zrobić

    Pozdrawiam

    0 10
  • #3 18 Lis 2010 20:58
    walek33
    Poziom 28  

    Cytat:
    w jednej komórce zapiszesz jakąś datę startową, w drugiej użyjesz funkcji daty bieżącej, w trzeciej różnicę

    Czy Kolega nie za bogato operuje komórkami. :D Skąpstwa proszę troszkę wprowadzić i to wszystko z cytatu umieścić w jednej komórce. :D
    Myślę, że komórka trzecia załatwia cały problem. :D
    Code:
    =dziś()  - data
    tak jak napisałeś. A teraz trochę ośmielę się skomplikować życie. Otóż owa funkcja dziś() jest upośledzona takową wrednością, że działa jak to określają Microwładcy Office-a "nietrwale". Tak więc nie może być użyta w tym przykładzie. :cry: Czyżby pozostawało nieśmiertelne VBA?

    0
  • #4 18 Lis 2010 21:22
    miki605
    Poziom 9  

    powiem Wam że jedziecie ostro:)

    "nietrwale" czyli nie będzie można zrobić czegoś takiego jakbym chciał?
    jeśli chodzi o te doliczanie dni to da radę tak ? ale z tym wycinaniem i wklejanie może być problem?

    Dodano po 2 [minuty]:

    a może lepiej coś takiego zrobić w Accessie?

    0
  • #5 19 Lis 2010 08:51
    walek33
    Poziom 28  

    Nie, nie. Nie wszystko jest tak jak myślisz. Z datą Dżyszla podpowiedział Ci zgodnie z Twoim założeniem:

    Cytat:
    jeśli wpiszę w określoną komórkę cyfrę "2" to chciałbym aby następnego dnia pokazała sie cyfra "3"
    Dokładasz tylko na końcu formułki liczącej ilość dni "+ 2" i liczy jak wyżej.
    Problem jest z:
    Dżyszla napisał:
    A w innym arkuszu zrobisz funkcję warunkową...
    i polega na tym że funkcja Excel-owska nie wytnie Ci komórki tylko zwróci jej wartość. Żeby wykonać:
    Cytat:
    wtedy zawartość komórki która jest obok tej z liczbą dni została wycięta i przeniesiona np do innego arkusza do konkretnej komórki
    musisz (?) posiłkować się VBA. Stwórz więc makro, które wykonywać się będzie przy osiągnięciu w komórce z wcześniej wspomnianą formułą
    Cytat:
    aż dojdzie do momentu np. 10 dni
    odpowiedniej wartości.

    0
  • #6 19 Lis 2010 09:05
    mah111
    Poziom 12  

    Jeśli chodzi o daty, koledzy już wyjaśnili jak obliczyć cyferki...
    a wycinanie i wklejanie... cóż.. tu VBA się kłania...

    Ale nic nie stoi na przeszkodzie żeby użyć funkcji jeżeli.

    W komórce z której wartość ma być wycięta:
    JEŻELI(liczba mniejsza od 10;wpisz liczbę jeśli prawda;wstaw puste jeśli fałsz)

    W komórce gdzie ma się wklejać wartość:
    Jeżeli(liczba w komórce wycinanej mniejsza od 10;wpisz puste jeśli prawda;wpisz liczbę jeśli fałsz)

    Nie wiem czy o coś takiego chodziło, ale to będzie pseudo wycinanie i wklejanie za pomocą funkcji jeżeli...

    0
  • #7 19 Lis 2010 22:20
    miki605
    Poziom 9  

    chyba nie dam rady tego zrobić, za słaby jestem w te klocki :(
    udało mi się z tą data ale teraz zwracanie, niezwracanie w komórkach to chyba się nie uda

    0
  • #8 20 Lis 2010 07:05
    adamas_nt
    Moderator Programowanie

    Jak słusznie

    walek33 napisał:
    Otóż owa funkcja dziś() jest upośledzona takową wrednością, że działa jak to określają Microwładcy Office-a "nietrwale". Tak więc nie może być użyta w tym przykładzie. :cry: Czyżby pozostawało nieśmiertelne VBA?
    Wszystkie wyniki dowolnych funkcji odwołujące się do w/w również będą nietwałe. Można wykorzystać formatowanie warunkowe i zaczerwienić ową komórkę z liczbą, jeśli przekroczy określoną wartość oraz jeśli "konkretna komórka" jest pusta i wtedy w komórce obok tej "komórki obok" przy pomocy JEŻELI wyświetlić tekst np "Kopiuj natychmiast!". Następnie "ręcznie" kopiuj>wklej specjalnie>wartości.

    Oczywiście wygodniej będzie całą "robotę" zlecić VBA. Np wklejając do Thisworkbook coś na wzór tego
    Code:
    Private Sub Workbook_Open()
    
    kom_z_liczba = "C1"
    kom_ta_obok = "D1"
    konkretna_kom = "A1" 'jeśli kolumna to End(xlDown).Row
    ark1 = "Arkusz1" 'to ten z liczbą
    ark2 = "Arkusz2" 'ten z konkretną komórką

    If Sheets(ark1).Range(kom_z_liczba) > 9 And Sheets(ark2).Range(konkretna_kom) = "" Then
      Sheets(ark2).Range(konkretna_kom) = Sheets(ark1).Range(kom_ta_obok)
    End If

    End Sub
    Być może będzie trzeba znaleźć jakiś sposób/regułę, żeby nie powielać kopiowania w kolejne dni (liczba będzie sobie rosła, jeśli użytkownik niczego nie zmieni) ale to zależy już od organizacji danych w arkuszu wynikowym oraz intencji autora.

    0
  • #9 20 Lis 2010 08:38
    miki605
    Poziom 9  

    chyba mi sie udało tak z grubsza ale mam jedno zasadnicze pytanie czy formuła dziś() będzie sie aktualizowała samoczynnie? powiedzcie proszę czy ona będzie się zmieniać o północy teoretycznie? czy jak? przepraszam za mało profesionalne pytanie ale studia mam humanistyczne:)

    0
  • #10 20 Lis 2010 09:28
    adamas_nt
    Moderator Programowanie

    Tak. Jeśli dzisiaj w dowolną komórkę wpiszesz =Dziś() i otworzysz arkusz za 20 lat, to w komórce wyświetlone będzie "20-11-2030" (aktualna data systemowa). Liczba, jak łatwo policzyć, będzie miała wartość 7305 i uruchomi się makro (zakładając, że w wersji Excel 2030 to wszystko będzie jeszcze działało :) ...)

    0
  • #11 22 Lis 2010 20:16
    miki605
    Poziom 9  

    Udało się oczywiści dzięki Wam
    dziekuje bardzo pozdro

    0
  Szukaj w 5mln produktów