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 - Google Sheets - blokowanie daty przy konkretnej wartości.

Puchenn 20 Lis 2020 07:47 3051 26
REKLAMA
  • #1 19056200
    Puchenn
    Poziom 3  
    Posty: 56
    Ocena: 11
    Dzień dobry,
    Wracam do was w kolejnym tematem w świecie Excela Google :)
    Mam takie problem, potrzebuje do kolumny wprowadzić i zakotwiczyć datę dnia dzisiejszego. mam dwie kolumny

    A B
    Do naprawy
    Naprawiony 20.11.2020

    Zależy mi na tym że w momencie kiedy wpisze w kolumnie A wartość naprawiony to w kolumnie B wbija się data z tego dnia
    użyłem na tą chwile funkcji =JEŻELI(A1="Naprawiony";DZIŚ();"") - jeżeli jest naprawiony data wskakuje a jak nie to zostaje puste, Natomiast problem polega na tym że nie potrafię zakotwiczyć Daty, i jak dzisiaj odpaliłem arkusze to na 1000 wierszy zmieniło się na 20/11/2020. Chciałbym żeby data zostawała z Dnia w którym była wybrana wartość Naprawiony.

    Jest ktoś w stanie mi pomóc edytować tą funkcje, tak żeby się blokowała ?

    Z góry dziękuje
  • REKLAMA
  • #2 19056486
    Maciej Gonet
    Specjalista - VBA, Excel
    Posty: 2207
    Pomógł: 824
    Ocena: 481
    Zakładając, że formuła jest w B1 i odnosi się do A1:
    Kod: Text
    Zaloguj się, aby zobaczyć kod
    Żeby to działało w ustawieniach arkusza musi być włączona zgoda na obliczenia iteracyjne.
    W momencie wpisywania tej formuły do B1 w komórce A1 nie powinno być wpisane "Naprawiony", dopiero później.
    W tym wariancie data skasuje się gdy w A1 zostanie usunięty lub zmieniony wpis.
    Inny wariant:
    Kod: Text
    Zaloguj się, aby zobaczyć kod
    Ta formuła gdy raz wpisze datę, będzie ją przechowywać niezależnie od ewentualnych późniejszych zmian w komórce A1. Oczywiście obliczenia iteracyjne muszą być włączone.
    Tak by to działało w Excelu. Czy będzie działać w arkuszach Google, tego nie jestem pewien. To znaczy mam obawy co będzie następnego dnia. Próbowałem ręcznie zmieniać datę systemową i dopóki arkusz jest otwarty to wygląda, że działa. Ale po zamknięciu i ponownym otwarciu wygląda jakby data była pobierana nie lokalnie, ale gdzieś z zewnątrz. Ja normalnie pracuję w Excelu i nie mam doświadczenia z Google. Musisz sprawdzić i eksperymentować. Można to też zrobić makrem, ale ja Ci mogę napisać najwyżej do Excela.
  • #3 19056633
    Puchenn
    Poziom 3  
    Posty: 56
    Ocena: 11
    Czy te obliczenia Interacyjne można włączyć na Arkuszach Google, Bo tak przypomnę że to na tych arkuszach musi działać nie na zwykłym Excelu. ( UPDATE, znalazłem te Obliczenia ale nie wiem jak je ustawić )
    Kolumna A jest zazwyczaj pusta, jak serwis zakończy naprawę, wpisuje tam Naprawiony i wtedy chciałbym żeby data się pojawiała z tego dnia w którym było tam wpisane naprawiony i taka zostawała. Tak żebym mógł sobie później przefiltrować po dacie ile było wykonanych napraw danego dnia.

    Excel - Google Sheets - blokowanie daty przy konkretnej wartości.

    Tak to ma mniej więcej wyglądać.

    A dokładnie to tak to wygląda na moim arkuszu STATUS to kolumna "I" a tam gdzie data to kolumna "M"
    Excel - Google Sheets - blokowanie daty przy konkretnej wartości.
  • #4 19056796
    Prot
    Poziom 38  
    Posty: 2580
    Pomógł: 574
    Ocena: 297
    Puchenn napisał:
    Jest ktoś w stanie mi pomóc edytować tą funkcje, tak żeby się blokowała ?

    To jest niemożliwe do zrealizowania z tzw. funkcją nietrwałą :cry:
    Jeśli chcesz uzyskać taki efekt Timestamp :idea: :D możesz wykorzystać np. Apps Script uruchamiany wyzwalaczem "on edit" :spoko:
    Kod: VBScript
    Zaloguj się, aby zobaczyć kod


    Oczywiście musisz odpowiednio zmodyfikować ten skrypt: nazwa arkusza, numery kolumn (edytowana i z Timestamp), treść tekstu :D , oraz ... zarejestrować ten skrypt do bezpiecznego stosowania w Twoich plikach :please:
  • Pomocny post
    #5 19056856
    Maciej Gonet
    Specjalista - VBA, Excel
    Posty: 2207
    Pomógł: 824
    Ocena: 481
    Jest możliwe włączenie obliczeń iteracyjnych w arkuszach Google.
    Plik/Ustawienia arkusza kalkulacyjnego/Obliczenia/Obliczenia iteracyjne/Włącz/Zapisz ustawienia. Pozostałe parametry iteracji (maksymalna liczba i próg) są w tym przypadku nieistotne.
    Natomiast
    Prot napisał:
    To jest niemożliwe do zrealizowania z tzw. funkcją nietrwałą
    Czy to sprawdziłeś, czy tylko się domyślasz? Ja wiem, że w Excelu to jest wykonalne, natomiast w arkuszach Google nie mam doświadczenia.

    Skrypt jest zapewne wygodniejszy.
  • #6 19056866
    Puchenn
    Poziom 3  
    Posty: 56
    Ocena: 11
    Panowie :D jestem zielony w tym temacie jak najbliższy zielony przedmiot w waszym obrębie. Także nawet nie wiem gdzie i jak taki skrypt wprowadzić.
  • Pomocny post
    #7 19056979
    Prot
    Poziom 38  
    Posty: 2580
    Pomógł: 574
    Ocena: 297
    Maciej Gonet napisał:
    Czy to sprawdziłeś, czy tylko się domyślasz?

    No przyłapałeś mnie :D nie sprawdziłem :oops: , ale od czasów Excel 5.0 w takich sytuacjach korzystałem z makr :ok:
    Puchenn napisał:
    nie wiem gdzie i jak taki skrypt wprowadzić.

    Trzeba popytać "wujka Google" :D i trochę poczytać np. https://codelabs.developers.google.com/codelabs/apps-script-fundamentals-1#0
  • REKLAMA
  • Pomocny post
    #8 19058271
    adamas_nt
    VIP Zasłużony dla elektroda
    Posty: 5320
    Pomógł: 1508
    Ocena: 659
    Prot napisał:
    No przyłapałeś mnie :D nie sprawdziłem :oops:
    Ktoś to musi zrobić... Czyżby na mnie wypadło? Niech będzie. Sprawdziłem, działa:

    Excel - Google Sheets - blokowanie daty przy konkretnej wartości.       Excel - Google Sheets - blokowanie daty przy konkretnej wartości.

    Trzeba tylko 'offset' przeflancować ;)
  • Pomocny post
    #9 19058562
    Maciej Gonet
    Specjalista - VBA, Excel
    Posty: 2207
    Pomógł: 824
    Ocena: 481
    Moje formuły też działają, to znaczy przechowały wczorajsze daty i dziś pokazały to samo.
  • Pomocny post
    #10 19058608
    Prot
    Poziom 38  
    Posty: 2580
    Pomógł: 574
    Ocena: 297
    adamas_nt napisał:
    Ktoś to musi zrobić..

    No bez przesady :lol: Skrypt przed publikacją testowałem w Google Sheets :sm9: Nie sprawdzałem jednak tam możliwości wyliczeń iteracyjnych, co wytknął mi kolega Maciej Gonet :spoko:
    Maciej Gonet napisał:
    Prot napisał:
    To jest niemożliwe do zrealizowania z tzw. funkcją nietrwałą
  • #11 19062542
    Puchenn
    Poziom 3  
    Posty: 56
    Ocena: 11
    Panowie dziękuje wam bardzo za pomoc. Dopiero dzisiaj odczytałem resztę postów, ale już działałem i udało mi wprowadzić wasze obie opcje, także u mnie na tą chwilę też działa wszystko. Na tą chwilę korzystam tylko z formuły, ale skrypty też ruszałem i działało.

    Dzięki jeszcze raz
  • #12 19072354
    Puchenn
    Poziom 3  
    Posty: 56
    Ocena: 11
    A tak ruszę jeszcze na chwilkę ten temat. Bo z własnej ciekawości i potrzeby rozwijania głowy :D
    Do skryptu który tu kolega @Prot.
    Jak w przypadku tej funkcji zmienić to żeby akcja się odbywała np w kolumnach E a data w H, bo nie mogę dojść do tego. Informacja tam jest ze dzieją się akcje w kolumnach A i B ale w całym tym kodzie nie potrafię tego odczytać.
    Domyślam się że może być to w tym wierszu if(( r.getColumn() == 1 ) && (r.getValue( ale nie jestem pewien. Jesteście Panowie mnie w stanie naprowadzić na ścieżkę.

    Edit:
    Ok Datę ogarnąłem var nextCell = r.offset(0, 5); ze tu się zmienia miejsce daty, a "naprawiony" jak przenieść do kolumny np E
  • REKLAMA
  • #13 19072512
    Prot
    Poziom 38  
    Posty: 2580
    Pomógł: 574
    Ocena: 297
    Puchenn napisał:
    Jesteście Panowie mnie w stanie naprowadzić na ścieżkę.

    Słusznie rozumujesz :D dla analizy kolumny E trzeba zmienić fragment kodu
    Kod: VBScript
    Zaloguj się, aby zobaczyć kod

    Puchenn napisał:
    Datę ogarnąłem var nextCell = r.offset(0, 5);

    Tu błąd :cry: jeśli chcesz daty mieć w kolumnie H powinno być
    Kod: VBScript
    Zaloguj się, aby zobaczyć kod
    :D
  • #14 19072584
    Puchenn
    Poziom 3  
    Posty: 56
    Ocena: 11
    Hmm jesteś pewien że "var nextCell = r.offset(0, 3)" wtedy data mi wkakuje do kolumny D natomiast jak wpisze "var nextCell = r.offset(0, 7)" to dopiero mi się pokazuje w kolumnie H.

    Ok kolumna naprawione się zmienia SUPER !!


    OK ! doszedłem do tego sam jak to działa :D nie było tematu dzięki jeszcze raz
  • #15 19086075
    Puchenn
    Poziom 3  
    Posty: 56
    Ocena: 11
    Panowie, wrócę jeszcze na chwilę do tematu i takie pytanie do was, bo finalnie korzystam ze skryptu od kolegi @Prot . o którym tutaj gadaliśmy, mam jeszcze jedno pytanie, a nie chce ruszać nowego tematu więc pomyślałem że tutaj go popchnę. A na dobrą sprawę jest związany z również z tymi Datami.
    Chciałem sobie dorobić do tego arkusza mały kalkulator który by zliczał mi np. ile serwisant Bartek zrobił napraw w listopadzie.
    arkusz wygląda tak :
    Excel - Google Sheets - blokowanie daty przy konkretnej wartości.

    I jak na załączonym obrazku po prawej jest kalulator wszystkich osób, czy jestem w stanie jakoś dopisać do skryptu albo użyć jakieś funkcji, żeby mi podliczał ten Kalkulator Wszystkie naprawy Bartka czy Krzyśka które były zrobione w listopadzie, i kolejno żebym mógł soie po prostu zmieniać w tym kalkulatorze datę której musi szukać.
  • #16 19086379
    Prot
    Poziom 38  
    Posty: 2580
    Pomógł: 574
    Ocena: 297
    Do takiego celu moim zdaniem najlepiej wykorzystać funkcję LICZ.WARUNKI() :idea: np. tak jak na zrzucie
    Excel - Google Sheets - blokowanie daty przy konkretnej wartości.2020-12...png (31.85 kB)Musisz być zalogowany, aby pobrać ten załącznik.
    Oczywiście zawsze możesz określić dodatkowy warunek dla zakresu z Nazwiskami serwisantów gdzie występuje określone nazwisko :D
  • #17 19086605
    Puchenn
    Poziom 3  
    Posty: 56
    Ocena: 11
    Ok a jest opcja taka żebym w taką funkcje mógł sobie wpisać np szukaj Krzysiek w kolumnie i dopasuj to do 2020-12 w drugiej kolumnie i zlicz wszystko
  • #18 19086645
    Prot
    Poziom 38  
    Posty: 2580
    Pomógł: 574
    Ocena: 297
    Puchenn napisał:
    żebym w taką funkcje mógł sobie wpisać np szukaj Krzysiek

    Przecież wyraźnie pisałem :cunning:
    Prot napisał:
    zawsze możesz określić dodatkowy warunek dla zakresu z Nazwiskami serwisantów gdzie występuje określone nazwisko

    np. tak
    Excel - Google Sheets - blokowanie daty przy konkretnej wartości.2020-12-0..1).png (36.03 kB)Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #19 19086907
    Puchenn
    Poziom 3  
    Posty: 56
    Ocena: 11
    Dziękuje za wszelką pomoc, ale poddaje się nie potrafię wprowadzić tej formuły pod mój arkusz żeby liczyła to tak jak u ciebie ;/
    Mój arkusz prezentuje się dokładnie w taki sposób.:
    Excel - Google Sheets - blokowanie daty przy konkretnej wartości.

    Czy jesteś mi w stanie pomóc ułożyć do tego taką funkcje ?, bo ja podkładam pod twoją funkcje moje kolumny i wywala mi Błąd i nie bangla :(
  • #20 19087593
    Prot
    Poziom 38  
    Posty: 2580
    Pomógł: 574
    Ocena: 297
    A gdzie Ty masz kolego te daty, które mają być zliczane, a gdzie masz kolumnę z serwisantami :?: :cry:
    Jak widzisz w moim zrzucie masz określony zakres dat (kolumna B), oraz kolumnę z serwisantami (kolumna C) :idea: - to wtedy możesz zliczać wszystkie wystąpienia danych (wierszy czy tzw rekordów danych), które spełniają wszystkie określone warunki :D Jeśli takich danych nie ma w Twojej tabeli to z takiej formuły albo uzyskasz 0 albo błąd :cunning:
  • #21 19088385
    Puchenn
    Poziom 3  
    Posty: 56
    Ocena: 11
    OK działa !! :D
    Doszedłem do tego ! krop po kroku :D

    Jedno pytanie do kolegi @Prot Czy w tej funkcji i w twoim skrypcie jest opcja ustawić samego miesiąca ? W sumie to najbardziej żeby ta funkcja użyta do Kalkulatora o którym teraz rozmawiamy rozpoznawała nie całą datę czyli 2020-12-03 tylko wyszukała np. tylko połowę wartości jaką zawiera komórka. "2020-12" tak żeby nie czytało dnia. Bo na tą chwile już mi to działa tak że mogę zliczyć każdego ile zrobił w dany dzień. a Pytanie czy mogę cały miesiąc
  • #22 19089842
    Prot
    Poziom 38  
    Posty: 2580
    Pomógł: 574
    Ocena: 297
    Puchenn napisał:
    Czy w tej funkcji i w twoim skrypcie jest opcja ustawić samego miesiąca ?

    Oczywiście, że tak :D Jak wprowadzisz dodatkową kolumnę z funkcją MIESIĄC() z daty serwisu to możesz zmienić formułę LICZ.WARUNKI jak na zrzucie :spoko:
    Excel - Google Sheets - blokowanie daty przy konkretnej wartości.2020-12...png (38.41 kB)Musisz być zalogowany, aby pobrać ten załącznik.
    Musisz jednak wyważyć :arrow: co chcesz analizować czy zliczać dane dla dowolnego okresu (dzień, tydzień, miesiąc, kwartał itp.) czy też interesują Cię dane tylko dla danych pojedynczych miesięcy :?:

    Moim zdaniem znacznie lepszym rozwiązaniem jest jednak rozwiązanie pierwotne :ok:
  • #23 19931857
    tomaszsykutera
    Poziom 5  
    Posty: 3
    Dzien dobry ,
    mam podobny problem z datą w arkuszu google, moja tabelka wygląda tak że w kolumnie F nie moge utrzymać wpisanej dany poprzez funkcję, mam włączone obliczenia iteracyjne, czy ktoś z Was może mi pomóc jak mam napisać funkcję dla kolumny F ??
    Excel - Google Sheets - blokowanie daty przy konkretnej wartości.
  • #24 19932320
    Prot
    Poziom 38  
    Posty: 2580
    Pomógł: 574
    Ocena: 297
    tomaszsykutera napisał:
    czy ktoś z Was może mi pomóc

    Proponuję dokładnie przeanalizować formuły iteracyjne kolegi Gonet :D
    Musisz tam (przykład dla komórki F5 :!: ) wprowadzić raczej formułę typu
    Kod: VBScript
    Zaloguj się, aby zobaczyć kod

    ale zważ że może powstać problem z "przeciąganiem" takich formuł - najlepiej chyba wyłączyć iterację - przeciągnąć formułę i ponownie włączyć iterację :wink:
  • #25 19932334
    tomaszsykutera
    Poziom 5  
    Posty: 3
    super, dziękuję, ja również jestem zielony z funkcji dopiero co zacząłem w tym coś dłubać, możesz mi jeszcze wytłumaczyć co to za zmienna
    N na samym początku, szczerze nie kumam początku tej funkcji :(
  • #27 19932368
    tomaszsykutera
    Poziom 5  
    Posty: 3
    ok , dziękuje za pomoc

Podsumowanie tematu

LABEL_AI_GENERATED
Użytkownik poszukiwał rozwiązania w Google Sheets, aby automatycznie wprowadzać datę w kolumnie B, gdy w kolumnie A wpisywana jest wartość "Naprawiony". Początkowo zastosował funkcję =JEŻELI(A1="Naprawiony";DZIŚ();"") lecz napotkał problem, ponieważ data zmieniała się przy każdym otwarciu arkusza. Uczestnicy dyskusji zaproponowali różne podejścia, w tym użycie obliczeń iteracyjnych oraz skryptu Apps Script, który uruchamia się przy edycji komórki. Użytkownik uzyskał pomoc w implementacji skryptu, który umożliwia wprowadzenie daty tylko raz, a także wprowadzenie funkcji do zliczania napraw według serwisantów i miesięcy. Ostatecznie użytkownik z powodzeniem zaimplementował obie metody.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA