Skocz do zawartości


Close Open
Close Open
Zdjęcie
- - - - -

Wstawianie daty z ostatniego wpisu. EXCEL


  • Please log in to reply
7 replies to this topic

#1 KaroliusPL

KaroliusPL

    Adept

  • Forumowicze
  • Pip
  • 4 Postów:

Napisany 04 styczeń 2018 - 14:24

Cześć,

 

Piszę ponieważ od kilku dni męczę się z jedną formułą.
 

Mam stworzony plik w którym wiersz K3:AAA3 jest uzupełniony o daty dni roboczych.
Poniżej jest wpisywany Tekst dla odpowiedniego produktu.
W kolumnie E stworzona jest formuła pokazująca ostatnią niepustą komórkę z wiersza K4:AAA4, K5:AAA5, itd.

Chciałbym aby w kolumnie H pokazywała się "DATA Z GODZINĄ" ostatniego wpisu. Dodatkowo, żeby nie aktualizowała się przy obliczaniu arkusza.
 

Jeżeli to pomoże to mam taką formułę:

 

=JEŻELI(K4:AAA4<>"";JEŻELI(LUB(I4="";ORAZ(F4<>FAŁSZ;F4<>K4:AAA4));TERAZ();I4);"")

 

Problem jest taki, że musi porównywać pełne zakresy, nawet te które wg. daty już są nieaktualne. Nie do końca wiem jak zrobić żeby sprawdzało tylko od ostatnio uzupełnionej komórki.

 

Z góry dziękuję

Pozdrawiam



#2 broda99

broda99

    Rozmowny

  • Forumowicze
  • PipPipPipPipPipPip
  • 570 Postów:
  • Płeć:Mężczyzna
  • Lokalizacja:W-wa

Napisany 06 styczeń 2018 - 11:53

Pokaż ten plik, wskaż  jaka wartość i gdzie ma się pojawiać.



#3 KaroliusPL

KaroliusPL

    Adept

  • Forumowicze
  • Pip
  • 4 Postów:

Napisany 09 styczeń 2018 - 08:26

niestety nie mogę wprowadzić.... :/



#4 broda99

broda99

    Rozmowny

  • Forumowicze
  • PipPipPipPipPipPip
  • 570 Postów:
  • Płeć:Mężczyzna
  • Lokalizacja:W-wa

Napisany 09 styczeń 2018 - 09:18

Uruchom edytor VB (Developer > VB albo Alt-F11) > w odpowiednim arkuszu wklej poniższy kod:

 

Private Sub Worksheet_Change(ByVal Target As Range)
Dim WorkRng As Range, Rng As Range
Dim xOffsetColumn As Integer

Set WorkRng = Intersect(Application.ActiveSheet.Range("B:B"), Target)
xOffsetColumn = 1
If Not WorkRng Is Nothing Then
    Application.EnableEvents = False
    For Each Rng In WorkRng
        If Not VBA.IsEmpty(Rng.Value) Then
            Rng.Offset(0, xOffsetColumn).Value = Now
            Rng.Offset(0, xOffsetColumn).NumberFormat = "dd-mm-yyyy, hh:mm:ss"
        Else
            Rng.Offset(0, xOffsetColumn).ClearContents
        End If
    Next
    Application.EnableEvents = True
End If
End Sub

Zmień odpowiednio kolumnę w której dokonujesz modyfikacji (w tej chwili "B") i przesunięcie (w tej chwili xOffsetColumn = 1).



#5 broda99

broda99

    Rozmowny

  • Forumowicze
  • PipPipPipPipPipPip
  • 570 Postów:
  • Płeć:Mężczyzna
  • Lokalizacja:W-wa

Napisany 11 styczeń 2018 - 02:09

...



#6 KaroliusPL

KaroliusPL

    Adept

  • Forumowicze
  • Pip
  • 4 Postów:

Napisany 11 styczeń 2018 - 11:22

Dzięki bardzo za pomoc.
Chciałem jeszcze tylko spytać, czy jest możliwość wprowadzenia w kodzie:


Set WorkRng = Intersect(Application.ActiveSheet.Range("B:B"), Target)
xOffsetColumn = 1

Zamiast wskazania w kolumnie obok, to żeby pokazywało datę w jednej wybranej kolumnie?? np. w kolumnie E

Oraz:

Czy można zrobić zakres nie w kolumnie tylko w wierszu?

Czyli po wpisaniu czegoś w wierszu G6:AAA6 pokazuje datę wpisu w komórce E6??

 

Z góry dziękuję za pomoc.

Pozdrawaim



#7 broda99

broda99

    Rozmowny

  • Forumowicze
  • PipPipPipPipPipPip
  • 570 Postów:
  • Płeć:Mężczyzna
  • Lokalizacja:W-wa

Napisany 12 styczeń 2018 - 13:44

Proszsz...:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim WorkRng As Range, Rng As Range

Set WorkRng = Intersect(Application.ActiveSheet.Range("G:AAA"), Target)
If Not WorkRng Is Nothing Then
    Application.EnableEvents = False
    For Each Rng In WorkRng
        If Not IsEmpty(Rng.Value) Then
            Cells(Rng.Row, 5).Value = Now
            Cells(Rng.Row, 5).NumberFormat = "dd-mm-yyyy, hh:mm:ss"
        Else
            Cells(Rng.Row, 5).ClearContents
        End If
    Next
    Application.EnableEvents = True
End If
End Sub

Uwaga: kod nie kontroluje wpisywanych wartości - zmiana zawartości komórki na taką samą traktowana jest jako kolejna modyfikacja.

 

PS. Naprawdę pracujesz na takim zakresie (703 kolumny)???



#8 KaroliusPL

KaroliusPL

    Adept

  • Forumowicze
  • Pip
  • 4 Postów:

Napisany 15 styczeń 2018 - 11:13

Dzięki bardzo za pomoc, wszystko działa jak należy. :)

 

Odpowiadając na pytanie, to może rzeczywiście nie na, aż tak dużym zakresie, ale do kolumny OA udaje się czasem dotrzeć. :)

 

Pozdrawiam,






0 Użytkowników czyta ten temat

0 użytkowników, 0 gości, 0 anonimowych użytkowników