Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2014, 13:32   #1
Hard55
Пользователь
 
Регистрация: 15.01.2012
Сообщений: 12
По умолчанию Предпоследняя строка

Доброго времени суток! суть моей проблемы вот в чем: Необходимо с одного листа Excel на другой скопировать данные последних 4 строчек таблицы. Причем таблица может быть любых размеров (предположительно каждый день вносятся данные), а на новом листе они должны быть не в строчку а распределены по ячейкам. пример с последней строкой:

Sheets(3).Cells(4, 4) = Sheets(1).Cells(Rows.Count, 1).End(xlUp)
Sheets(3).Cells(5, 2) = Sheets(1).Cells(Rows.Count, 2).End(xlUp)

но так я могу скопировать данные только с последней строки, а надо еще 3 предыдущих. Заранее от души благодарен
Hard55 вне форума Ответить с цитированием
Старый 27.10.2014, 13:51   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Так Вы можете скопировать с любых двух строк (разных) - всё зависит от того, как расположатся данные. А это нам неизвестно...
А вообще почитайте про offset. И resize. Можно в help'е.
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 27.10.2014 в 14:18.
Hugo121 вне форума Ответить с цитированием
Старый 27.10.2014, 14:11   #3
Hard55
Пользователь
 
Регистрация: 15.01.2012
Сообщений: 12
По умолчанию

пример видимо не удачно привел. основная таблица находится на первом листе. а вставить данные нужно на 3 лист. в примере я вставляю данные из последней строки таблицы на 3 лист в определенные ячейки, а мне нужно данные из последних 4 строк.
Hard55 вне форума Ответить с цитированием
Старый 27.10.2014, 14:12   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Так примера и нет нигде...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 27.10.2014, 14:34   #5
Hard55
Пользователь
 
Регистрация: 15.01.2012
Сообщений: 12
По умолчанию

вот документ excel, я думаю так будет более понятно. данные нужны всегда с последних четырех строк таблицы на первом листе. данные в таблицу постоянно добавляются

Последний раз редактировалось Hard55; 27.10.2014 в 16:59.
Hard55 вне форума Ответить с цитированием
Старый 27.10.2014, 14:48   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Где-то примерно так - не стал выискивать что куда копировать, думаю разберётесь сами.
Содержимое массива смотрите в окне Locals - но в общем там всё точно как на листе.
Код:
Private Sub CommandButton1_Click()
    Dim a()
    a = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Offset(-3, 0).Resize(4, 14).Value
    With Sheets(3)
        .Cells(4, 4) = a(1, 1)
        .Cells(5, 2) = a(1, 2)
        .Cells(6, 1) = a(1, 3)
        .Cells(6, 3) = a(1, 4)
        .Cells(7, 2) = a(2, 1)
        .Cells(8, 1) = a(2, 2)
        .Cells(9, 2) = a(2, 3)
        .Cells(9, 4) = a(2, 4)
        .Cells(10, 2) = a(3, 1)
        .Cells(11, 2) = a(3, 2)
        .Cells(14, 2) = a(3, 3)
        .Cells(16, 2) = a(3, 4)
    End With
End Sub
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 27.10.2014, 14:52   #7
Hard55
Пользователь
 
Регистрация: 15.01.2012
Сообщений: 12
По умолчанию

Огромное,Человеческое СПАСИБО!
Hard55 вне форума Ответить с цитированием
Старый 27.10.2014, 16:22   #8
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Только конечно же если последняя строка будет меньше чем 4 - то код выпадет в ошибку (т.к. выше будет край листа).
На практике возможно нужно эту строку контролировать и корректировать что берём в массив и сколько выгружаем. Но если там всегда будет 4 и больше строк с данными - то отработает без подстраховки.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 27.10.2014, 16:58   #9
Hard55
Пользователь
 
Регистрация: 15.01.2012
Сообщений: 12
По умолчанию

Да, я понял! Это как раз то, что мне было нужно! еще раз благодарю! думаю можно закрывать тему
Hard55 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверить, равны ли строки первая и последняя, вторая и предпоследняя и т. д. PASCAL sanji2010 Помощь студентам 2 14.05.2014 00:08
строка string и строка char Petyu Общие вопросы C/C++ 3 16.05.2013 00:26
Строка состаяния или загрузачная строка Sergeu Мультимедиа в Delphi 8 27.08.2008 10:32