Chcę mieć makro, które:
- Wykryj na stronie („Oryginał”) wartość komórki (E8 $, data)
- Przejdź do innej strony („Transfer”), (nazwa strony jest różna, ale odpowiednia nazwa strony pojawia się w „Oryginale” $ Z $ 1).
- Spójrz w dół do kolumny „Transfer”, która zawiera listę w każdy poniedziałek (zakres dat zaczyna się od A20, tekst powyżej).
- Znajdź poniedziałek przed datą E8 $ (więc dla E8 = 17 sobota, znalazłby się pon. 12)
- Wstaw wiersz BENEATH w ten poniedziałkowy wiersz (czyli przed wierszem z poniedziałkiem 19)
- Skasuj ten wiersz (więc wiersz przechodzi od Pon-12, puste, Pon-19
- Wytnij / Kopiuj z („Original $ E8”) z zakresu A8: H8
- Przejdź do strony „Transfer”
- Wstaw zaznaczenie A8: H8 do wiersza utworzonego na 5.
- Zapętlić i zrobić to samo za E9 $, dopóki wszystkie informacje nie zostaną umieszczone w „Transfer”.
Komórki, które podałem, to właściwe komórki, daty, które właśnie wymyśliłem (i tak różnią się dla każdego konta).
Eric bardzo uprzejmie podał mi zmodyfikowany przeze mnie kod:
Public Sub do_stuff()
Dim date_to_look_for As String
Dim row As Integer
date_to_look_for = Range("'Original'!K8").Value
'^L: This is the cell that you are reading from. Ensure it is the MONDAY formula
row = 20
'^L: This is where the Transfer date values start
Do Until row = Range("'Transfer'!A1").End(xlDown).row + 1 'create our loop.
'Notice that the .end function will find the end of the data in a column
If Range("'Transfer'!A" & row).Value = date_to_look_for Then
'^L: Look for Original (X) Value specified above (make sure it's Monday).
Range("'Transfer'!" & row + 1 & ":" & row + 1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
'^L: Once
Range("'Transfer'!A" & row + 1 & ":H" & row + 1).Value = Range("'Original'!A8:H8").Value
'^L:This is WHERE it will paste '^L: This is what will copy
Exit Sub 'no sense in running loop more if already found
End If
row = row + 1
Loop
'If code gets here then the date was never found! so tack to end of list
Dim endrow As Integer
endrow = Range("'Transfer'!A1").End(xlDown).row
Range("'Transfer'!A" & endrow & ":H" & endrow).Value =
Range("'Original'!A8:H8").Value
'^L: What is this?
End Sub
(Wiadomości L: są moimi notatkami, gdy opracowałem, co zrobiły poszczególne sekcje - prosimy o poprawienie mnie, jeśli źle zrozumiałem. Inne zielone „notatki są Erica i nie jestem pewien, czy rozumiem te fragmenty. Nie rozumiem Naprawdę muszę to robić, o ile działa, ale jeśli chcesz nauczyć mnie kodowania, nie krępuj się: D)
Mój problem polega teraz na tym, jak zrobić pętlę, aby działała w dół do oryginalnych wartości (w tym przypadku kolumna K, więc idzie do K9, K10 itp. I robi to samo? Czy to może CIĘĆ zamiast KOPIOWAĆ i usunąć z oryginalnego arkusza po przeniesieniu?
Dzięki wszystkim, którzy pomagali, jesteście świetni!