Диапазон копирования VBA каждую 7-ю строку, 7 раз

Добрый день,

После слишком многих часов исследования правильного кода для того, что я пытаюсь сделать, мне, наконец, приходится спрашивать здесь экспертов. Я ужасно новичок в VBA (но теперь подсел на его завоевание!).

Я пытаюсь скопировать диапазон из 3 ячеек данных, которые я ввожу ежедневно (я ввожу данные в столбцы J: L), затем вставляю их 7 раз, каждую 7-ю строку ниже (так что я копирую / вставляю данные понедельника в следующий 7 понедельников в соответствующих строках ниже). Каждый день меняется, как и место вставки (данные вторника будут скопированы, затем вставлены в следующие 7 строк вторника ниже и т. д.). Данные, которые я ввожу, всегда будут столбцами J: L. Затем, когда данные вставлены, у меня есть кнопка, которая использует эти данные и очищает их. Итак, столбцы J: L всегда чистые, пока я не добавлю данные в следующую строку из 3 ячеек.

Любая помощь приветствуется, так как я просто в тупике. Я пробовал несколько вариантов "lastrow", но не нашел подходящего кода, который работал бы для меня (из-за того, что собирал информацию отсюда, но не смог заставить ее работать).

Я попытался добавить сюда снимок, но, видимо, я слишком новичок даже для этого: / Идея кажется простой, поэтому, надеюсь, найдется простое решение.

Спасибо за вашу крутизну! Отредактировано (извините за то, что сделал мой первый запуск на этом сайте таким трудным: /)

Sub CopyPaste()  
'  
' CopyPaste Macro  
' copies and pastes range for 8 total weeks  
'  
Dim lastrow As Long  
lastrow = Range("J" & Rows.Count).End(xlUp).Row  
'  
    Selection.Copy  
    Range("J27").Select  
    ActiveSheet.Paste  
    Range("J34").Select  
    ActiveSheet.Paste  
    Range("J41").Select  
    ActiveSheet.Paste  
    Range("J48").Select  
    ActiveSheet.Paste  
    Range("J55").Select  
    ActiveSheet.Paste  
    Range("J62").Select  
    ActiveSheet.Paste  
    Range("J69").Select  
    ActiveSheet.Paste  
    Application.CutCopyMode = False  
End Sub

Пожалуйста, опубликуйте код, который вы пробовали.

SJR 01.05.2018 20:26

Sub CopyPaste () '' CopyPaste Macro 'копирует и вставляет диапазон в течение 8 недель' Dim lastrow As Long lastrow = Range ("J" & Rows.Count) .End (xlUp) .Row 'Selection.Copy Range ("J27" ) .Выберите ActiveSheet.Paste Range ("J34"). Выберите ActiveSheet.Paste Range ("J41"). Выберите ActiveSheet.Paste Range ("J48"). Выберите ActiveSheet.Paste Range ("J55"). Выберите ActiveSheet.Paste Диапазон ("J62"). Выберите ActiveSheet. Вставьте диапазон ("J69"). Выберите ActiveSheet. Вставьте приложение. CutCopyMode = False End Sub

Aram34 01.05.2018 20:30

Всегда ли первый понедельник начинается в J27? Где вы вводите данные?

SJR 01.05.2018 20:41

J27 была строкой только для понедельника, когда я начал пытаться вычислить код для вставки в следующие 7 строк понедельника. Как только эта дата пройдет, в следующий понедельник я введу данные в J34, чтобы я мог скопировать их туда и передать их в следующие 7 строк понедельника.

Aram34 01.05.2018 20:47

Я немного запутался. Ваш код предполагает, что вы хотите скопировать из неопределенной ячейки в J27, J34 и т. д. Можете ли вы привести конкретный пример того, где данные начинаются и куда они должны идти?

SJR 01.05.2018 20:54

извините, я ТАК новичок в VBA. Этот код должен был найти последнюю строку, в которой я только что ввел данные в столбец J-L, для отправной точки того, что нужно скопировать / вставить. Данные начинаются в столбце J: L для любой строки для этого дня недели (я ввожу число в каждую из 3 ячеек в этих столбцах). Я хочу скопировать эти 3 числа, а затем вставить их ниже, пропуская пустые строки, пока они не дойдут до следующего дня недели (каждая 7-я строка). это должно быть вставлено 7 раз. это отобразит 8 строк данных в J: L для 8 понедельников, вторников или любого другого дня).

Aram34 01.05.2018 21:03
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
2
6
144
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Посмотрим, поможет ли это. Я предвижу проблему в том, что после того, как вы скопируете значения на лист, скажем, для понедельника, последней использованной строкой будет строка 70 или что-то в этом роде.

Sub x()

Dim i As Long, lastrow As Long

lastrow = Range("J" & Rows.Count).End(xlUp).Row

For i = 1 To 7
    Cells(lastrow, "J").Resize(, 3).Offset(7 * i).Value = Cells(lastrow, "J").Resize(, 3).Value
Next i

End Sub

пока что это лучшее, что я видел для того, что я пытаюсь сделать! У меня есть код, назначенный кнопке, поэтому, как только я нажму на нее, мне нужно, чтобы данные были скопированы и вставлены в следующие 7 строк, а затем готово. ваш код работает хорошо, но мне приходится перемещать его, пока я не остановлюсь на том, сколько строк нужно вставить.

Aram34 01.05.2018 21:26

Приведите, пожалуйста, конкретный пример? Я не знаю, что означает «я должен перемещать его, пока не остановлюсь на том, сколько строк нужно вставить».

SJR 01.05.2018 21:43

остановите прессы! Мои извинения! Я тестировал этот код, используя F8 для выполнения шагов, и он вставлял только одну строку за раз. Я продолжал нажимать F8, чтобы прогнать его, вставить еще одну строку и т. д. Что ж, мне нужно было просто запустить весь макрос, потому что он работает отлично!

Aram34 01.05.2018 21:54

Другие вопросы по теме