Я хочу иметь макрос, который будет:
- Определить на странице («Оригинал») значение ячейки ($ 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 и т. Д., И делает то же самое? и удалить из оригинального листа после передачи?
Спасибо всем, кто помог, вы, ребята, великолепны!