Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Kategoria: Kamery IP / Alarmy / Automatyka Bram
Montersi
Kategoria: Akumulatorki / Baterie / Ładowarki

Excel - Automatyczna data. Jak to zrobić?

OSAnaMIOD 05 Lip 2010 15:18
  • #1 05 Lip 2010 15:18
    OSAnaMIOD
    Poziom 7  

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

  • #2 05 Lip 2010 17:15
    marek003
    Poziom 39  

    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 - Automatyczna data. Jak to zrobić?

  • #3 05 Lip 2010 17:49
    OSAnaMIOD
    Poziom 7  

    tzn? jak dokladniej to zrobic, za pomoca makra...????

  • Pomocny post
    #4 05 Lip 2010 19:36
    marek003
    Poziom 39  

    W edytorze makro w danym arkuszu (worksheets) w sekcji Change wpisz:

    Code:
    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
    Code:
    Else
    
            Range("d11").Value = ""
    Poniżej przykład

  • #5 06 Lip 2010 07:34
    OSAnaMIOD
    Poziom 7  

    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 06 Lip 2010 08:20
    marek003
    Poziom 39  

    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.

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

    Code:
    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

  • #7 14 Lip 2014 23:58
    projectorEL
    Poziom 9  

    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 23 Sty 2015 13:00
    slay70
    Poziom 9  

    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 23 Sty 2015 14:27
    marek003
    Poziom 39  

    Tak samo jak w powyższych przykładach.
    Ale na marginesie:
    W tej samej komórce?
    5 12:15:38 ?

  • #10 28 Sty 2015 14:36
    slay70
    Poziom 9  

    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.

  • #11 28 Sty 2015 20:02
    marek003
    Poziom 39  

    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: vb
    Zaloguj się, aby zobaczyć kod

  Szukaj w 4mln produktów
Przeglądaj produkty