Всем привет! До того как увидел Ваш форум, старался обходится тем что откопаю в просторах интернета. Но мне понравилось то, насколько качественно решаются проблемы форумчан. Поэтому решил обратиться и со своей проблемой к Вам, дабы облегчить себе поставленную задачу. Прошу строго не судить, начал изучать VB в excel лишь последние 4 дня(и вообще VB в целом, не надо было спать на лекциях), волшебным пенделем в решении этой проблемы для меня будет ответ на всего лишь один вопрос, но проблему опишу подробно в спойлере если вдруг кому-то станет интересно
Мне нужно присвоить значение первой найденной не пустой ячейки к переменной, чтобы уже её перенести в другую таблицу. Ячейки из столбца J на листе "Выгрузка" И каждую последующую найденную ячейку переносить в последующую строку на листе "Общая" как i=i+1 в определенный столбец D начиная со строки 15. Я пытался сделать это через ПОИСКПОЗ, но видимо не могу додумать как это все правильно использовать(мучаюсь 4-ый день).
Это Реестр по квартирам, из клиента базы данных данные выгружаются в неотсортированном формате на лист "Выгрузка". Затем мои попытки перенести данные на лист "Общая" считая что интервал между ними одинаковый, оказались тщетными. Но если они переносятся, то формируются в одну общую таблицу как и надо куда потом подставляется только шапка таблицы. Затем вступает в силу VBA где написан код сортировки по значениям в ячейках, значения могут быть как из ячейки так и вписаны в код изначально, и все что отсортировано копируется на лист "Раздельная"(копируются строки в которых найдены значения, кстати значения пишутся мною вручную, к сожалению не выводятся в выгрузке). Все это было бы не сложным если бы квартир было 2 как в примере, а не 5 500.
вот тут код к кнопке ActiveX
[vba]
Код
Option Explicit Private Sub CommandButton1_Click()
Dim cName, i, cell, cDateCur cDateCur = ("Жильцы") 'значение ячейки которое мы ищем.
Application.ScreenUpdating = False i = 10 For Each cName In Array("Общая") 'Тут можно задать целый список/массив страниц на которых будет проводится поиск For Each cell In Intersect(Sheets(cName).Columns("A"), Sheets(cName).UsedRange) If cell.Value = cDateCur Then cell.EntireRow.Copy Cells(i, 1).PasteSpecial (xlValues) 'чтобы формулы не потекли, вставляем только значения найденных ячеек i = i + 1 End If Next Next cDateCur = ("Застройщики") i = 30 For Each cName In Array("Общая") For Each cell In Intersect(Sheets(cName).Columns("A"), Sheets(cName).UsedRange) If cell.Value = cDateCur Then cell.EntireRow.Copy Cells(i, 1).PasteSpecial (xlValues) i = i + 1 End If Next Next Application.ScreenUpdating = True
End Sub
[/vba]
Всем привет! До того как увидел Ваш форум, старался обходится тем что откопаю в просторах интернета. Но мне понравилось то, насколько качественно решаются проблемы форумчан. Поэтому решил обратиться и со своей проблемой к Вам, дабы облегчить себе поставленную задачу. Прошу строго не судить, начал изучать VB в excel лишь последние 4 дня(и вообще VB в целом, не надо было спать на лекциях), волшебным пенделем в решении этой проблемы для меня будет ответ на всего лишь один вопрос, но проблему опишу подробно в спойлере если вдруг кому-то станет интересно
Мне нужно присвоить значение первой найденной не пустой ячейки к переменной, чтобы уже её перенести в другую таблицу. Ячейки из столбца J на листе "Выгрузка" И каждую последующую найденную ячейку переносить в последующую строку на листе "Общая" как i=i+1 в определенный столбец D начиная со строки 15. Я пытался сделать это через ПОИСКПОЗ, но видимо не могу додумать как это все правильно использовать(мучаюсь 4-ый день).
Это Реестр по квартирам, из клиента базы данных данные выгружаются в неотсортированном формате на лист "Выгрузка". Затем мои попытки перенести данные на лист "Общая" считая что интервал между ними одинаковый, оказались тщетными. Но если они переносятся, то формируются в одну общую таблицу как и надо куда потом подставляется только шапка таблицы. Затем вступает в силу VBA где написан код сортировки по значениям в ячейках, значения могут быть как из ячейки так и вписаны в код изначально, и все что отсортировано копируется на лист "Раздельная"(копируются строки в которых найдены значения, кстати значения пишутся мною вручную, к сожалению не выводятся в выгрузке). Все это было бы не сложным если бы квартир было 2 как в примере, а не 5 500.
вот тут код к кнопке ActiveX
[vba]
Код
Option Explicit Private Sub CommandButton1_Click()
Dim cName, i, cell, cDateCur cDateCur = ("Жильцы") 'значение ячейки которое мы ищем.
Application.ScreenUpdating = False i = 10 For Each cName In Array("Общая") 'Тут можно задать целый список/массив страниц на которых будет проводится поиск For Each cell In Intersect(Sheets(cName).Columns("A"), Sheets(cName).UsedRange) If cell.Value = cDateCur Then cell.EntireRow.Copy Cells(i, 1).PasteSpecial (xlValues) 'чтобы формулы не потекли, вставляем только значения найденных ячеек i = i + 1 End If Next Next cDateCur = ("Застройщики") i = 30 For Each cName In Array("Общая") For Each cell In Intersect(Sheets(cName).Columns("A"), Sheets(cName).UsedRange) If cell.Value = cDateCur Then cell.EntireRow.Copy Cells(i, 1).PasteSpecial (xlValues) i = i + 1 End If Next Next Application.ScreenUpdating = True