Страницы: 1 2 След.
RSS
Как определить последнюю ячейку на листе через VBA?
 
Столкнулся с проблемой, не могу понять как правильно сделать подсчет строки. Что бы например с одного файла вытягивало конкретный диапазон до пустого поля. И подставляло в таблицу по порядку( без пропуска и перезаписи)

Сейчас у меня в коде перезаписывает только. Если меняю другой диапазон, то он в разнобой добавляет информацию сразу же после 1 алгоритма, а потом 2.
Может кто то подскажет как правильно сделать что бы брало диапазон с разных ячеек у другого файла и подставляло  все равномерно по полям( диапазон захвата может быть разным, поэтому брал до первого пустого поля)

В принципе в файле на листе пример как должно быть  и макрос  
 
aosunproject, попробуйте слепить что-то по аналогии…
Ваш макрос (это больше для помогающих, чтобы не качать файл)
Мой код

P.S.: мой код взят отсюда
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
vikttur, а я и сам не понял, что надо-то  :D
вроде «Как определить последнюю ячейку на листе через VBA?», но можно и более общее типа «Копирование данных между книгами/файлами»
Изменено: Jack Famous - 16.12.2019 16:15:28
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Ну извините, сам толком не могу понять суть проблемы где не идет. Вот и не знаю как правильно назвать тему)
 
Трабл в том что именно надо это сделать с множества файлов. Но вот не задача, хз как реализовать считывание с ячейки и перенос на лист где макрос. И при эти данные добавлять в столбец, не удаляя прежние. Уже ломал голову и пробовал по разному. Результат вот что вышло, но с одним файлом увы. Следующий файл перезаписывает прежнее данные. А надо что бы именно добавило данные после первого файла. Как то так)
 
Цитата
aosunproject написал: сам толком не могу понять суть проблемы
Это Ваша задача и если Вы ее не понимаете, то кто поймет и сделает то, что Вы не можете сформулировать?!

Цитата
aosunproject написал: Что бы например с одного файла вытягивало конкретный диапазон до пустого поля.
Значит ли это, что нужно определить последнюю строку диапазона? Это главная проблема?
 
Цитата
aosunproject написал:
Следующий файл перезаписывает прежнее данные
Например:
Код
Sub record_1()
    '...
    With ThisWorkbook.Sheets(1)
        SrcWbkSht.Range("C7", SrcWbkSht.Range("C7").End(xlDown)).Copy _
            Destination:=.Range("F" & .Rows.Count).End(xlUp).Offset(1, 0)
                Application.CutCopyMode = False
        '...
    End With
    '...
End Sub
 
а почему бы не применять простое правило: у темы нет названия - тему в топку
может люди когда-нибудь начнут писать в названии темы не о проблемах, с которыми столкнулись используя определенную функцию для решения задачи,  а  будут писать о задаче, которую не могут решить
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Так мы пол-форума вычистим )
 
off
Цитата
vikttur написал:
Так мы пол-форума вычистим )
Я тут прикинул, это 35 дней по 8 часов непрерывной работы, без рыбы и детского питания .  :D
По вопросам из тем форума, личку не читаю.
 
Вот-вот. Пожалейте кота. Он же без детского питания загнется :)
 
Цитата
БМВ написал:
без рыбы
Стоп! Это как без рыбы?!!
 
На сайте были решения по сбору данных с разных файлов в один. Посмотрите рашения от Pavel55.
http://www.planetaexcel.ru/forum.php?thread_id=3878
http://www.planetaexcel.ru/forum.php?thread_id=4420
 
Цитата
vikttur написал:
Значит ли это, что нужно определить последнюю строку диапазона? Это главная проблема
Да.  
Изменено: aosunproject - 16.12.2019 15:52:04
 
Нужно что бы данные добавили следующие строки после первых. То есть как на рисунке, там где помечено должно добавить следующие данные. И так столько нужно будет. В идеале нужно было реализовать что бы с выбранных файлов вытягивало например столбец "С" и до последней включно заполненной ячейки(кроме пустых).
И скопировать это туда где мне надо и вставить(проверяя где последняя заполненная ячейка и вставлять после). Аналогично сделать с полем "В" и "А". При этом что бы данные были друг на против друга. Так как вытягиваются отдельные поля, а не вся книга.
Изменено: aosunproject - 16.12.2019 16:08:03
 
Вот что у меня выходит. Хз как бороться с этим. Каждые данные с отступом идут. Ноль идей
 
допустим на листе заполнены ячейки
а1, в1, с1, д1, е1
а2

какая последняя ячейка заполнена на листе? знаете???
Изменено: Ігор Гончаренко - 16.12.2019 16:43:21
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Как я понял, проблема в  использовании
Код
Range("A1").CurrentRegion.Rows.Count

Если это вычислить 1 раз и записать в переменную, то все последующие вставки попадут в 1 строку, а если это пересчитывать после каждой вставки, то (3 попытки для угадать).
 
Цитата
aosunproject написал: Нужно что бы данные добавили следующие строки после первых
Вы привели "много" примеров, за исключением того, как выглядят исходные данные, то есть те, которые должны быть скопированы.

Цитата
вытягивало например столбец "С" и до последней включно заполненной ячейки(кроме пустых).
У вас есть "дыры" в данных ?
 
Цитата
RAN написал:
Если это вычислить 1 раз и записать в переменную, то все последующие вставки попадут в 1 строку, а если это пересчитывать после каждой вставки, то (3 попытки для угадать).
Я не для того пишу, что бы угадывать. Суть проблемы описал. Вот спрашиваю у знатоков пример решения. Или дать решение в целом. Пока никто выше не дал толком ответ.  
 
Цитата
Ігор Гончаренко написал:
допустим на листе заполнены ячейки
а1, в1, с1, д1, е1
а2
какая последняя ячейка заполнена на листе?
пока никто не дал толком ответ...
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
В общем посидел чутка и начал в цикле загонять и понял в чем проблема. Так вот у меня есть счетчик от:
Код
 DestWbk.Worksheets(1).Range("E1").CurrentRegion.Rows.Count 

и получается так, что считает последнюю заполненную ячейку по всему листу. А не по конкретному полю. Итоге и не выходит. Мне нужно что бы счетчик каждый начинался отдельно. Вот и вся проблема)

Изменено: aosunproject - 18.12.2019 04:58:51
 
Цитата
Ігор Гончаренко написал:
пока никто не дал толком ответ...
нужно последняя заполненная строка по определенной колонке например а1, строка 5 последняя. В поле б1 строка 7
Изменено: aosunproject - 18.12.2019 05:17:29
 
Цитата
Ігор Гончаренко написал: пока никто не дал толком ответ...
нужно последняя заполненная строка по определенной колонке например а1, строка 5 последняя. В поле б1 строка 7

Итоги недели мучений вот решение:
Код
 Set SrcWbk = Workbooks.Open(MasivWbs)
    For i = 0 To N
        N = DestWbk.Worksheets(1).Range("F1").End(xlDown).Row
    
    i = N + 1
    'MsgBox i
        SrcWbk.Worksheets(1).Range("C7", Range("C7").End(xlDown)).Copy _
                    Destination:=DestWbk.Worksheets(1).Cells(i, 6)
    Next i
    
     For k = 0 To L
        L = DestWbk.Worksheets(1).Range("E1").End(xlDown).Row
     'MsgBox L
    k = L + 1
   
   ' MsgBox i
       SrcWbk.Worksheets(1).Range("D7", Range("D7").End(xlDown)).Copy _
Destination:=DestWbk.Worksheets(1).Cells(k, 5)
    Next k
Тут момент с .End(xlDown).Row (Проверка последней ячейки). Может кому то надо будет. Теперь осталось разобраться как залить несколько файлов и что бы с них сразу свело в одну таблицу)
Изменено: aosunproject - 18.12.2019 12:38:53
 
aosunproject,
пока нет ответа на конкретную ситуацию:  если на листе заполнены ячейки
а1, в1, с1, д1, е1
а2
какая последняя заполненная на этом листе ячейка?
не возможно
Цитата
aosunproject написал:
определить последнюю ячейку на листе через VBA?
т.е. пока не понятно как вообще определяется последняя ячейка - не возможно определить последнюю ячейку с помощью VBA.
просто хоть с VBA хоть без него не возможно определить последнюю ячейку, если не известно, как ее определять
Изменено: Ігор Гончаренко - 18.12.2019 06:09:50
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
aosunproject написал:
Суть проблемы описал. Пока никто выше не дал толком ответ
Вам ответ дали на проблему еще в сообщении #3 от 13 Дек 2019 19:21:10. Там ссылки на статью, где разные методы определения последней ячейки расписаны, включая и упомянутый Вами .End(xlDown).Row с его достоинствами и недостатками.
А вот Вы на задаваемые Вам вопросы отвечать не хотите. Отсюда и отсутствие решений конкретно под Вашу проблему.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Дмитрий(The_Prist) Щербаков: Вам ответ дали на проблему еще в сообщении  #3
один-в-один по названию темы, кстати говоря  :D
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous,
по названию темы один-в-один, жаль только все еще не понятно какую ячейку автор считает последней заполненной (может оказаться совсем не та, что в советах, и это автоматически делает совет совершенно бесполезным для решения задачи решаемой автором темы)
т.е. когда понятны все условий задачи, ее бывает трудно решить, а когда условий нет - решение можно только угадать!
Изменено: Ігор Гончаренко - 18.12.2019 12:35:41
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, это не проблема помогающих, поэтому мне вот не жаль))
Изменено: Jack Famous - 18.12.2019 12:39:28
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Я написал выше как мне надо в сообщении #23. Решение нашел, благодаря выводу в сообщении. Оттуда математика и результат. Чутка позже напишу полный код, может кому то поможет для подобных задач.
Страницы: 1 2 След.
Наверх