Вставка данных в следующий пробел из «A4»

#excel #vba #copy-paste #copying #pasting

#excel #vba #копировать-вставить #копирование #вставка

Вопрос:

У меня есть 4 вкладки..

Год 1, год 2, год 3, общие расходы.

Год 1 вставляется на вкладке «Общие расходы» следующим образом:

https://i.stack.imgur.com/SegGE .

Теперь мне нужны данные за 2-й и 3-й годы для копирования из строки 4 вниз и вставки в следующий пробел строки в Total Spend.

Это код, который я использую для обозначения диапазона 2 и 3 года и для попытки найти первую пустую ячейку в столбце A для вставки данных.

Я не могу понять, почему это не работает. Он ничего не вставляет ни в какое место.

     Dim Year2 As Range
Dim Year3 As Range
Dim Location As Range

Set Year2 = Sheets("Year 2 Data").Range("4:4").End(xlDown)
Set Year3 = Sheets("Year 3 Data").Range("4:4").End(xlDown)
Set Location = Sheets("Total Spend").Cells(Rows.Count, 1).End(xlUp)
If Len(Location.Value) > 0 Then Set Location = Location.Offset(1)


 ' This paste is manual so Row 2 stays blank - this is needed in formatting later on. 

    Sheets("Year 1 Data").Select
    Cells.Select
    Selection.Copy
    Sheets("Total Spend").Select
    Cells.Select
    ActiveSheet.Paste

Year2.Copy Location

Year3.Copy Location
 

Комментарии:

1. Вы установили Year2 и Year3 как весь столбец. Спускаться некуда. Вы намеревались начать с Range("A4") ?

2. Исправление: с листа 2 и 3 года: A3, вниз и поперек. Затем последовательно вставляется в последнюю строку данных в таблице «Общие расходы», игнорируя пустую строку в строке 2.

Ответ №1:

используйте это

 '    Range(Sheets("Year 2 Data").Range("4:4"), Sheets("Year 2 Data").Range("4:4").End(xlDown))
 

вместо

 Sheets("Year 2 Data").Range("4:4").End(xlDown)
 

то же самое будет применяться для листов («Данные за 3 года»)

Комментарии:

1. Спасибо, я попробую это в ближайшее время.

2. Похоже, это не работает — кажется, что он перезаписывает предыдущие данные и не находит последнюю пустую строку после пустой строки 2. Год 1 — в строке 1 есть данные, строка 2 пуста, строка 3 содержит данные примерно до строки 5000. Год 2 — Мне нужны данные из строки 3 для подопечных, которые будут вставлены в следующую доступную строку после того, как данные года 1 заканчиваются годом 3 — То же, что и выше, но когда данные года 2 заканчиваются. Надеюсь, это немного прояснит ситуацию.

Ответ №2:

После просмотра комментариев, будет ли что-то вроде этого ответом? (Я пока не могу его протестировать, так как ушел с работы.)

 Dim Year2 As Range
Dim Year3 As Range
Dim Location As Range

Set Year2 = Range(Sheets("Year 2 Data").Range("4:4"), Sheets("Year 2 Data").Range("4:4").End(xlDown))

Set Year3 = Range(Sheets("Year 3 Data").Range("4:4"), Sheets("Year 3 Data").Range("4:4").End(xlDown))

Set Location = Sheets("Total Spend").Cells(Rows.Count, 3).End(xlUp)
 

«Я изменил приведенное выше, чтобы начать со строки 3, пропустив пустую строку 2, поэтому теоретически он будет проверять, используя IF из строки 3 вниз.

 If Len(Location.Value) > 0 Then Set Location = Location.Offset(1)
 

«Эта вставка выполняется вручную, поэтому строка 2 остается пустой — это необходимо при форматировании позже.

 Sheets("Year 1 Data").Select
Cells.Select
Selection.Copy
Sheets("Total Spend").Select
Cells.Select
ActiveSheet.Paste

Year2.Copy Location

Year3.Copy Location
 

Ответ №3:

Хорошо, итак, согласно вашей логике, я думаю, приведенный ниже код поможет. Он выберет данные из листа и вставит данные в выходной лист, используя последнюю строку выходного листа.

n A для вставки данных.

Я не могу понять, почему это не работает. Он ничего не вставляет ни в какое место.

 Dim Year2 As Range
 

Затемнить год3 как диапазон
Затемнение местоположения как диапазона

Установите Year2 = диапазон (листы («Данные за год 2»).Диапазон («4: 4»), листы («Данные за 2 года»).Диапазон («4: 4»).Конец (xlDown))

Установите Year3 = диапазон (листы («Данные за год 3»).Диапазон («4: 4»), листы («Данные за 3 года»).Диапазон («4: 4»).Конец (xlDown)) Установите местоположение = листы («Общий расход»).Ячейки (строки.Количество 88, 1).Конец (xlUp).смещение (1, 0)

Если Len(местоположение.Значение)> 0 Затем установите местоположение = Местоположение.Смещение (1)

«Эта вставка выполняется вручную, поэтому строка 2 остается пустой — это необходимо при форматировании позже.

 Sheets("Year 1 Data").Select
Cells.Select
Selection.Copy
Sheets("Total Spend").Select
Cells.Select
ActiveSheet.Paste
 

Листы («Общие расходы»).Ячейки (строки.Количество 88, 1).Конец (xlUp).смещение (1, 0).выберите

Год2.Расположение копирования

Листы («Общие расходы»).Ячейки (строки.Количество 88, 1).Конец (xlUp).смещение (1, 0).выберите

Год3.Расположение копирования

Комментарии:

1. Это выдает ошибку 1004 объекта, определенного по адресу: Set Location = Sheets («Total Spend»). Ячейки (строки. Количество 88, 1).Конец (xlUp).смещение (1, 0)

2. удалите » 88″ из строк.количество

Ответ №4:

Ооо! используйте приведенный ниже код, чтобы устранить эту ошибку. я удалил » 88″ из rows.count, чтобы устранить эту ошибку.

 Set Location = Sheets("Total Spend").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)