Я хочу иметь макрос, который будет:
- Определите на странице ("Оригинал") значение ячейки ($ E8, дата)
- Перейдите на другую страницу ("Передача"), (имя страницы может отличаться, но имя соответствующей страницы отображается в "Оригинале" $ Z $ 1.)
- Посмотрите вниз на столбец "Трансфер", в котором перечислены каждый понедельник (диапазон дат начинается с A20, текст выше).
- Найдите понедельник перед датой $ E8 (поэтому для $ E8 = суббота 17-го будет понедельник 12-го)
- Вставьте строку BENEATH в эту строку понедельника (перед строкой, в которой написано "Пн 19")
- Стереть этот ряд (так что строка идет Mon-12, пусто, Mon-19
- Вырезать / Копировать из («Оригинал $ E8») диапазона A8:H8
- Перейти на страницу "Трансфер"
- Вставьте этот выбор A8:H8 в строку, созданную в 5.
- Вернитесь назад и делайте то же самое за $ E9, пока вся информация не будет помещена в "Transfer".
Ячейки, которые я дал, - это правильные ячейки, даты, которые я только что составил (они в любом случае различаются для каждой учетной записи).
Эрик очень любезно предоставил мне код, который я изменил, а именно:
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
(L: сообщения - это мои записи, когда я выяснил, что делал каждый раздел - пожалуйста, не стесняйтесь поправлять меня, если я неправильно понял. Другие зеленые заметки принадлежат Эрику, и я не уверен, что понимаю эти биты. Хотя мне это и не нужно, пока это работает, но если вы хотите научить меня программированию, не стесняйтесь: D)
Моя проблема сейчас в том, как сделать так, чтобы он зацикливался так, чтобы он работал вниз по исходным значениям (в данном случае столбец K, поэтому он переходит к K9, K10 и т.д., И делает то же самое? Кроме того, может ли он CUT вместо COPY, и удалить из оригинального листа после передачи?
Спасибо всем, кто помог, вы, ребята, великолепны!