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 - Przetworzenie numeru tygodnia roku na datę

Jean69 15 Lis 2017 20:15 906 16
  • #1 15 Lis 2017 20:15
    Jean69
    Poziom 5  

    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.

    0 16
  • #2 15 Lis 2017 20:41
    michalek1988
    Poziom 21  

    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.

    0
  • #3 15 Lis 2017 21:02
    Jean69
    Poziom 5  

    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

    0
  • #4 15 Lis 2017 22:46
    JRV
    Specjalista - VBA, Excel

    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)

    0
  • #5 16 Lis 2017 00:06
    lanzul
    Poziom 26  

    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ń ?

    0
  • #6 16 Lis 2017 07:40
    Jean69
    Poziom 5  

    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.

    0
  • #7 16 Lis 2017 08:07
    JRV
    Specjalista - VBA, Excel

    =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

    0
  • #8 16 Lis 2017 08:36
    huluk
    Poziom 30  

    Wytłumacz proszę jak rozumiesz tydzień. Początek tygodnia, koniec? Podaj najlepiej przykład, jaka konkretna data powinna być dla 1, 2 i 3 tygodnia 2017 roku?

    0
  • #9 16 Lis 2017 09:26
    JRV
    Specjalista - VBA, Excel

    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)

    0
  • #10 16 Lis 2017 16:40
    Jean69
    Poziom 5  

    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.

    0
  • #11 16 Lis 2017 18:13
    lanzul
    Poziom 26  

    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

    0
  • #12 16 Lis 2017 19:00
    Jean69
    Poziom 5  

    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.

    0
  • #13 16 Lis 2017 19:46
    JRV
    Specjalista - VBA, Excel

    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

    0
  • #15 16 Lis 2017 20:33
    adamas_nt
    Moderator Programowanie

    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...

    0
  • Pomocny post
    #16 16 Lis 2017 20:48
    JRV
    Specjalista - VBA, Excel

    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)

    0
  • #17 16 Lis 2017 21:08
    Jean69
    Poziom 5  

    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.

    0