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 – Jak ustawić stałą datę po wpisaniu wartości w sąsiedniej komórce?

OSAnaMIOD 05 Lip 2010 15:18 14345 11
REKLAMA
  • #1 8262784
    OSAnaMIOD
    Poziom 10  
    Posty: 20
    Ocena: 1
    Witam mam taki problem, chce zrobić tak, ze jeżeli wprowadzę w jednej komórce jakąś wartość to w komórce obok pojawi sie mi data. która pozostanie nie zmienna..

    próbowałem robić to tak:
    JEŻELI(CZY.PUSTA(C11);"";JEŻELI(B11="";TERAZ();B11))
    ze zmian iteracji ze 100 na 1... i niby wszystko ok ale za każdym razem co odpalam arkusz to misie ta iteracja zmienia , dodam jeszcze ze sam arkusz ma być na serwerze, i będzie otwierana na kilku komputerach... i wówczas trzeba będzie za każdym razem zmienia te iteracje..

    wie może ktoś jak to inaczej zrobic????
  • REKLAMA
  • #2 8263155
    marek003
    Poziom 40  
    Posty: 4607
    Pomógł: 801
    Ocena: 488
    Za pomocą makra wprowadzaj w daną komórkę datę.

    Wszystkie funkcje w excelu są automatycznie aktualizowane/przeliczane przy otwieraniu pliku - no chyba że wyłączysz automatyczne przeliczanie dla arkusza (przestawisz na ręczne i wyłączysz przelicz przed zapisem) . Arkusz będzie wtedy przeliczany/aktualizowany tylko po naciśnięciu F9

    Excel – Jak ustawić stałą datę po wpisaniu wartości w sąsiedniej komórce?
  • #3 8263258
    OSAnaMIOD
    Poziom 10  
    Posty: 20
    Ocena: 1
    tzn? jak dokladniej to zrobic, za pomoca makra...????
  • REKLAMA
  • Pomocny post
    #4 8263603
    marek003
    Poziom 40  
    Posty: 4607
    Pomógł: 801
    Ocena: 488
    W edytorze makro w danym arkuszu (worksheets) w sekcji Change wpisz:

    Private Sub Worksheet_Change(ByVal Target As Range)
    
    If Range("c11").Value <> "" And Range("b11").Value = "" Then
           
            Range("d11").Value = Now()
    Else
            Range("d11").Value = ""
    End If
    
    End Sub


    Sugerowałem się tym twoim "jeżeli". Czyli jeżeli pusta C11 to nic nie rób, a jeżeli coś jest w c11 to jeżeli równocześnie B11 jest pusta to podaj datę a jeżeli w c11 coś jest i w b11 też coś jest wtedy też nie rób nic. Oczywiście jeżeli zmienisz "ustawienia" data zostanie wyczyszczona (to część kodu po "else"). Jeżeli ma nie być czyszczenia daty po dopisaniu np jakiejś wartości w b11 wtedy wystarczy wykasować tą część kodu
    Else
            Range("d11").Value = ""
    Poniżej przykład
    Załączniki:
    • a1.xls (20.5 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #5 8264994
    OSAnaMIOD
    Poziom 10  
    Posty: 20
    Ocena: 1
    a da sie zrobic taki wpis dla wielu komorek?? chodzi mi o to ze w skoroszycie bede mam np. 50 arkuszy w ktorych sa tabelki po 200 pozycji, czy musze pisac osobna regola dla kazdej komurki i dla kazdego arkusz??
  • #6 8265050
    marek003
    Poziom 40  
    Posty: 4607
    Pomógł: 801
    Ocena: 488
    Można by spróbować z pętlą i uzależnić wskazania na daną komórkę od numeru pętli - jak znajdę chwilę to pokombinuje.

    Już znalazłem ale z pętlą w tym przypadku się nie da bo się pętla zapętla.

    Private Sub Worksheet_Change(ByVal Target As Range)
    
    For x = 1 To 200
    
        If Range("c" & x + 10).Value <> "" And Range("b" & x + 10).Value = "" Then
            Range("d" & x + 10).Value = Now()
       ' Else
        '    Range("d" & x + 10).Value = ""
        End If
    Next x
    
    End Sub

    Innymi słowy ręcznie wprowadzam wartość, "następuje change", makro wprowadza datę, znów "następuje change" i znowu włącza się pętla i tylko ctrl+break pozostaje.
    Trzeba coś innego wymyśleć.

    Co do poszczególnych arkuszy wystarczy ten pierwszy kod skopiować w "zakres" Change i już gorzej z pisaniem tych 200 pozycji.

    dodano po czasie
    ----------------------------------------------------
    Przed pętlą przedstawiona powyżej trzeba by było dać jeszcze jeden warynek że jeżeli zmianie ulegnie coś w kolumnie b lub c to rób tą pętle - wtedy nie będzie sie zapętlać. Zaraz pokombinuje.


    ZROBIŁEM

    Dla 200 pozycji (column=2 to kolumna B itd) dałem x+10 czyli od wiersza 11 ale można to zmienic - to tylko przykład.

    If Target.Column = 2 Or Target.Column = 3 Then
    
      For x = 1 To 200
    
        If Range("c" & x + 10).Value <> "" And Range("b" & x + 10).Value = "" Then
            Range("d" & x + 10).Value = Now()
        Else
            Range("d" & x + 10).Value = ""
        End If
      Next x
    End If


    Poniżej przykład. W innych arkuszach wystarczy wkleić ten kod w sekcje change
    Załączniki:
    • a1(1).xls (29.5 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #7 13797333
    projectorEL
    Poziom 11  
    Posty: 22
    odświeżę trochę temat bo potrzebuję pewną wariację takiego przypadku:
    potrzebuję zrobić makro które wstawi datę w kolumnie powiedzmy B kiedy w A będą dane, natomiast kiedy wstawię ""x"" w kolumnie C to wstawi dodatkową datę w kolumnie D.

    Cytat:

    Private Sub Worksheet_Change(ByVal Target As Range)

    With Target
    If .Column = 2 Then
    Cells(.Row, 15).Value = Now
    .Offset(0, 9).Value = Environ("UserName")
    End If
    End With

    End Sub

    Ta część kodu działa natomiast jak zrobić aby wstawił dodatkową datę kiedy zaznaczę (wpisze X) w innej kolumnie ... to nie wiem, brakuje mnie wiedzy o składni VBA
    walczę którąś noc i nic ...
  • #8 14359806
    slay70
    Poziom 10  
    Posty: 59
    Ocena: 22
    Witam, a wiecie może jak zrobić - żeby w komurce, w której wpisałem jakąś cyfrę (wartość) pojawiła się aktualna godzina tego wpisu?
  • #9 14360023
    marek003
    Poziom 40  
    Posty: 4607
    Pomógł: 801
    Ocena: 488
    Tak samo jak w powyższych przykładach.
    Ale na marginesie:
    W tej samej komórce?
    5 12:15:38 ?
  • #10 14376861
    slay70
    Poziom 10  
    Posty: 59
    Ocena: 22
    Właściwie, to nie do końca... (po przemyśleniach). Chodzi mi o to, że mam tabelę, w której muszę np. odnotować w wierszu od A1 do H1 kolejne dostawy towaru, w wierszu od A2 do H2 ma się pojawić czas ich wpisu. I takich kategorii (jak A1) mam kilka tzn: A1, A3, A5 itd. - i tu mam problem :(

    W załączniku tabela.
    Załączniki:
    • przyk__ad_.xls (93.5 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #11 14377992
    marek003
    Poziom 40  
    Posty: 4607
    Pomógł: 801
    Ocena: 488
    Słuchaj: jest tysiące przykładów rozwiązań zrobienia tego co chcesz. Wystarczyłoby trochę inwencji.
    Tu masz przykład dość toporny (bo na szybko) ale łatwo załapać o co w nim chodzi - dla pierwszych czterech wierszy. Myślę, że załapiesz jak go poszerzyć na kolejne wiersze.

    Swoją drogą to tłumaczyć problemu to Ty mnie umiesz. Co ma twój opis do załącznika? Załapałem po innym wątku.

    Trzecia rzecz: na przyszłość otwieraj własne wątki, a nie podpinasz się i to w dodatku z czymś innym, pod dość stare wątki.

    Kod: text
    Zaloguj się, aby zobaczyć kod
    Załączniki:
    • przyklad.xls (110 KB) Musisz być zalogowany, aby pobrać ten załącznik.

Podsumowanie tematu

✨ Użytkownik poszukiwał sposobu na automatyczne wstawianie daty w Excelu, gdy wprowadzi wartość w sąsiedniej komórce. Proponowane rozwiązania obejmowały użycie makr VBA, które reagują na zmiany w określonych komórkach. Wskazówki obejmowały kod, który ustawia datę w jednej komórce, gdy inna jest wypełniona, oraz omówienie problemów związanych z iteracjami i pętlami w VBA. Użytkownicy dzielili się również pomysłami na rozszerzenie funkcjonalności makr na wiele komórek i arkuszy, a także na wstawianie czasu w odpowiedzi na różne warunki.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA