logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Excel - Przetworzenie numeru tygodnia roku na datę

Jean69 15 Lis 2017 20:15 3483 16
REKLAMA
  • #1 16825804
    Jean69
    Poziom 8  
    Posty: 7
    Witam wszystkich

    Czy może ktoś mi pomóc przy tworzeniu formuły.
    W komórce A1 wpisuję cyfry 36151045881 w którym jest data.
    Cztery cyfry po 36 to jest data, 15 jest to rok 2015, a 10 to numer tygodnia który przypada na marzec.
    Daty w numerze zaczynają się od 2000 roku np. 360012157587 .
    Więc zaczynają się problemy przy przestępnych datach.
    Przez kilka próbowałem połączyć formuły Fragment.Tekstu, Dzień,Tygodnia z Datą.
    Ale nic mi nie wychodzi, sypie błędami albo nie działa formuła.
    Prosiłbym o napisanie formuły, bo dla mnie jest to za trudne do wykonania, za wysokie progi

    Dziękuję za wszelką okazaną pomoc.
  • REKLAMA
  • #2 16825887
    michalek1988
    Poziom 26  
    Posty: 675
    Pomógł: 68
    Ocena: 181
    Chodzi Ci o Excel? Wszystkie liczby zaczynają się od 36? Różnią się ilością cyfr? Określasz tydzień, ale czy w datach chcesz uzyskać wyłącznie miesiąc i rok? Napisz więcej danych.
  • #3 16825961
    Jean69
    Poziom 8  
    Posty: 7
    Tak chodzi mi Excel.
    Liczby zaczynają się różnie 41, 38, 36, itp.
    Tydzień potrafię określi, i nie jest mi potrzebny.
    Chodzi o to żeby z liczb 1510 (lub inne) pokazało mi datę rok, miesiąc i dzień, zaczynając od poniedziałku.
    Np dla numeru 36151045881 wyświetli mi 2015-03-02
  • #4 16826280
    JRV
    Specjalista - VBA, Excel
    Posty: 2724
    Pomógł: 805
    Ocena: 455
    Jean69 napisał:
    Np dla numeru 36151045881 wyświetli mi 2015-03-02

    Byc moze 2015-03-12 ?

    Dodano po 3 [minuty]:

    Sprobuj
    =DATA.WARTOŚĆ("20"&FRAGMENT.TEKSTU(A1;3;2)&"/1/1")+7*FRAGMENT.TEKSTU(A1;5;2)
  • REKLAMA
  • #5 16826460
    lanzul
    Poziom 30  
    Posty: 1023
    Pomógł: 199
    Ocena: 123
    Jean69 napisał:
    Np dla numeru 36151045881 wyświetli mi 2015-03-02

    JRV napisał:
    Byc moze 2015-03-12 ?

    Jean69, no właśnie, czy zaczynasz liczyć tygodnie od 01 stycznia danego roku, bo tak by wychodziło z 02-m marca, czy może jakoś inaczej ? Reguła dla tych wyliczeń ?
  • #6 16826601
    Jean69
    Poziom 8  
    Posty: 7
    Tygodnie zaczynam liczyć od poniedziałku danego roku, nie od 01 stycznia.
    Bo według kalendarz np: 1 tydzień 2009 roku zaczyna się 29.12.2008 a w 2010r. 04.01.2010r.
    Tak więc musi być 1 tydzień danego roku, nieważne że zaczyna się 30 grudnia poprzedniego roku.
    JVR regułę którą napisałeś po części działa ale w różnych latach, dodaje kilka dni 2, 5, a nawet 7.
    Ogólnie dzięki za interesowaniem moim problemem.
  • #7 16826636
    JRV
    Specjalista - VBA, Excel
    Posty: 2724
    Pomógł: 805
    Ocena: 455
    =DATA.WARTOŚĆ("20"&FRAGMENT.TEKSTU(A1;3;2)&"/1/1")+7*FRAGMENT.TEKSTU(A1;5;2)-DZIEŃ.TYG(DATA.WARTOŚĆ("20"&FRAGMENT.TEKSTU(A1;3;2)&"/1/1");3)-7
    p.s. nie
  • REKLAMA
  • #9 16826693
    JRV
    Specjalista - VBA, Excel
    Posty: 2724
    Pomógł: 805
    Ocena: 455
    Jean69 napisał:
    1 tydzień 2009 roku zaczyna się 29.12.2008 a w 2010r. 04.01.2010r.
    Za taka logika w 2010 mial by zaczynac 28.12.2009
    29.12.2008 - poniedziałek,
    28.12.2009 - to samo poniedziałek

    Dodano po 33 [minuty]:

    =DATA.WARTOŚĆ("20"&FRAGMENT.TEKSTU(A1;3;2)&"/1/1")+7*(FRAGMENT.TEKSTU(A1;5;2)-1)-DZIEŃ.TYG(DATA.WARTOŚĆ("20"&FRAGMENT.TEKSTU(A1;3;2)&"/1/1");3)*(DZIEŃ.TYG(DATA.WARTOŚĆ("20"&FRAGMENT.TEKSTU(A1;3;2)&"/1/1");3)<>0)
  • #10 16827632
    Jean69
    Poziom 8  
    Posty: 7
    Excel - Przetworzenie numeru tygodnia roku na datę
    JRV napisał:
    Jean69 napisał:
    1 tydzień 2009 roku zaczyna się 29.12.2008 a w 2010r. 04.01.2010r.
    Za taka logika w 2010 mial by zaczynac 28.12.2009
    29.12.2008 - poniedziałek,
    28.12.2009 - to samo poniedziałek
    Dodano po 33 [minuty]:
    =DATA.WARTOŚĆ("20"&FRAGMENT.TEKSTU(A1;3;2)&"/1/1")+7*(FRAGMENT.TEKSTU(A1;5;2)-1)-DZIEŃ.TYG(DATA.WARTOŚĆ("20"&FRAGMENT.TEKSTU(A1;3;2)&"/1/1");3)*(DZIEŃ.TYG(DATA.WARTOŚĆ("20"&FRAGMENT.TEKSTU(A1;3;2)&"/1/1");3)<>0)


    Tak jak wcześniej napisałem, tydzień zaczyna się od poniedziałku do niedzieli.
    Dołączam tabelkę, o co mi chodzi.
    W komórce A jest kod serwisowy od roku 2000 do 2017 z 1 tygodniem.
    W komórce B wpisałem aktualne daty, które powinno być.
    A w komórce zastosowałem pana formułę i jak widać, daty trochę się różnią (kolor czerwony).
    Przypuszczam, że jest to związane z rokiem przestępnym, dlatego się tak daty rozjeżdżają o tydzień.
    Myślę, że uśrednię do początek tygodnia do środy, bo inaczej chyba nie wyjdzie.
  • #11 16827836
    lanzul
    Poziom 30  
    Posty: 1023
    Pomógł: 199
    Ocena: 123
    Czytałeś podobny temat ?
    https://www.elektroda.pl/rtvforum/topic1612102.html
    Może wykorzystasz coś stamtąd ?
    Możesz jeszcze wypróbować takie wzory (nie moje, z sieci):

    "=DATA(A2;1;1)+(A1-1)*7-DZIEŃ.TYG(DATA(A2;1;1);2)+1", gdzie 'A1' - nr tygodnia; 'A2' - rok

    "=DATA(A2;1;1)+(WEEKNUM(DATA(A2;1;1);2)+A1*7)-1-7", gdzie 'A1' - nr tygodnia; 'A2' - rok
  • REKLAMA
  • #12 16827986
    Jean69
    Poziom 8  
    Posty: 7
    lanzul napisał:
    Czytałeś podobny temat ?
    https://www.elektroda.pl/rtvforum/topic1612102.html
    Może wykorzystasz coś stamtąd ?
    Możesz jeszcze wypróbować takie wzory (nie moje, z sieci):

    "=DATA(A2;1;1)+(A1-1)*7-DZIEŃ.TYG(DATA(A2;1;1);2)+1", gdzie 'A1' - nr tygodnia; 'A2' - rok

    "=DATA(A2;1;1)+(WEEKNUM(DATA(A2;1;1);2)+A1*7)-1-7", gdzie 'A1' - nr tygodnia; 'A2' - rok


    Tak, czytałem ten temat.
    Właśnie na nim się wzorowałem.
    Dzięki.
  • #13 16828133
    JRV
    Specjalista - VBA, Excel
    Posty: 2724
    Pomógł: 805
    Ocena: 455
    Wg. fotki z postu 10
    Jeśli 1 stycznia przypada od piątku do niedzieli, to początek tygodnia następny poniedziałek, w przeciwnym razie w ostatni poniedziałek grudnia poprzedniego roku
  • #15 16828285
    adamas_nt
    VIP Zasłużony dla elektroda
    Posty: 5320
    Pomógł: 1508
    Ocena: 659
    Cytat:
    Pierwszy tydzień roku to taki, w którym są przynajmniej 4 dni stycznia. Inaczej mówiąc, taki, w którym jest pierwszy czwartek stycznia lub dzień 4 stycznia. To oznacza, że tydzień 01 może zawierać dni z poprzedniego roku, a tydzień 53 – dni z następnego roku. Np. 1 stycznia 2005 wypadł w sobotę, więc 2004-W53 trwa od 27 grudnia 2004 do 2 stycznia 2005, a 2005-W01 zaczyna się 3 stycznia 2005 roku. Data kalendarzowa 2005-01-02 to data tygodniowa 2004-W53-7.
    Link

    W związku z tym, żeby znaleźć datę z Nr tygodnia, trzeba sprawdzić jakim dniem był 1-szy stycznia (WEEKDAY) i odjąć od wyniku mnożenia.

    W VBA, to w miarę proste (załącznik). Jeśli ktoś ma ochotę "przetłumaczyć" to na formuły...
    Załączniki:
    • Data_weekNr.xls (35.5 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • Pomocny post
    #16 16828335
    JRV
    Specjalista - VBA, Excel
    Posty: 2724
    Pomógł: 805
    Ocena: 455
    bingo
    =DATA.WARTOŚĆ("20"&FRAGMENT.TEKSTU(A1;3;2)&"/1/1")+7*(FRAGMENT.TEKSTU(A1;5;2)-1)-(DZIEŃ.TYG(DATA.WARTOŚĆ("20"&FRAGMENT.TEKSTU(A1;3;2)&"/1/1");3))+7*(DZIEŃ.TYG(DATA.WARTOŚĆ("20"&FRAGMENT.TEKSTU(A1;3;2)&"/1/1");3)>3)
  • #17 16828428
    Jean69
    Poziom 8  
    Posty: 7
    JRV napisał:
    bingo
    =DATA.WARTOŚĆ("20"&FRAGMENT.TEKSTU(A1;3;2)&"/1/1")+7*(FRAGMENT.TEKSTU(A1;5;2)-1)-(DZIEŃ.TYG(DATA.WARTOŚĆ("20"&FRAGMENT.TEKSTU(A1;3;2)&"/1/1");3))+7*(DZIEŃ.TYG(DATA.WARTOŚĆ("20"&FRAGMENT.TEKSTU(A1;3;2)&"/1/1");3)>3)


    Jesteś wielki.
    O to mi dokładnie chodziło, działa bez zarzutu.
    Dziękuje ci bardzo :D :D
    Temat uważam za zamknięty.

Podsumowanie tematu

✨ Użytkownik poszukiwał pomocy w przetwarzaniu numeru tygodnia roku na datę w Excelu, gdzie dane w komórce A1 zawierają kod serwisowy z informacjami o dacie. Kluczowe było ustalenie, że tydzień zaczyna się od poniedziałku, a formuły musiały uwzględniać lata przestępne. Uczestnicy dyskusji zaproponowali różne formuły, w tym wykorzystanie funkcji DATA.WARTOŚĆ, FRAGMENT.TEKSTU oraz DZIEŃ.TYG. Ostatecznie, jedna z formuł została uznana za skuteczną i spełniającą wymagania użytkownika.
Wygenerowane przez model językowy.
REKLAMA