Каждый день приходит дислокация по вагонам. Задача добавить в общую таблицу строки (а лучше отдельно данные по выбранным ячейкам), с проверкой их обновления, т.е. если данные повторяются, они не заносятся в общую таблицу, если изменилась хотя бы одна ячейка - добавляются в конец таблицы.
Каждый день приходит дислокация по вагонам. Задача добавить в общую таблицу строки (а лучше отдельно данные по выбранным ячейкам), с проверкой их обновления, т.е. если данные повторяются, они не заносятся в общую таблицу, если изменилась хотя бы одна ячейка - добавляются в конец таблицы.Дмитрий
Нужно столбцы (B, M, N, Q, R) из Таблицы 1 внести в Таблицу 2 на место (B, C, D, F, G) с условием, что данные из столбца Q первой табл. отличаются от данных столбца F таблицы 2, при чем только в том случае, если номера вагонов (столбец В) одинаковые. Наверно коряво описал.... надеюсь поймешь. =)
Нужно столбцы (B, M, N, Q, R) из Таблицы 1 внести в Таблицу 2 на место (B, C, D, F, G) с условием, что данные из столбца Q первой табл. отличаются от данных столбца F таблицы 2, при чем только в том случае, если номера вагонов (столбец В) одинаковые. Наверно коряво описал.... надеюсь поймешь. =)
Помогите ПЛЗ, мне в любом виде можно кривенько как-нибудь.... там доработаем напильником если че.... лишь бы автоматизировать процесс, а то объемы информации увеличиваются и пол дня убивать на эту выборку не охота как то...
Помогите ПЛЗ, мне в любом виде можно кривенько как-нибудь.... там доработаем напильником если че.... лишь бы автоматизировать процесс, а то объемы информации увеличиваются и пол дня убивать на эту выборку не охота как то...Гость
Сколько строк нужно обрабатывать? Думал на словаре сделать - но лениво продумывать, как в Item записать станцию и номер строки... Если строк не тысячи, то можно тупо цикл в цикле по двум массивам, или даже по ячейкам листа пройтись.
Сколько строк нужно обрабатывать? Думал на словаре сделать - но лениво продумывать, как в Item записать станцию и номер строки... Если строк не тысячи, то можно тупо цикл в цикле по двум массивам, или даже по ячейкам листа пройтись.Hugo
Ну вот под напильник. Перебираю ячейки - если строк не тысячи, то скорости хватает. Поставьте свой путь в Set tab1 = GetObject("c:\Temp\gost\Таблица 1.xls") и отследите, то ли вставляется:
Code
Option Explicit
Sub rabota_dlja_gostja() Dim r As Range, rr As Range, c As Range, cc As Range Dim tab1 As Object Set r = [a1].CurrentRegion Set r = r.Offset(2, 0).Resize(r.Rows.Count - 2, r.Columns.Count) 'сдвиг выбора таблицы на строки ниже и низ затем на 2 строки выше
Set tab1 = GetObject("c:\Temp\gost\Таблица 1.xls") Set rr = tab1.Sheets(1).[a1].CurrentRegion Set rr = rr.Offset(5, 0).Resize(rr.Rows.Count - 5, rr.Columns.Count) 'сдвиг выбора таблицы на строки ниже и низ затем на 5 строки выше For Each c In r.Columns(2).Cells For Each cc In rr.Columns(2).Cells If c.Value = cc.Value Then If c.Offset(, 4).Value <> cc.Offset(, 15).Value Then c.Offset(, 2).Value = cc.Offset(, 11).Value 'M=C c.Offset(, 3).Value = cc.Offset(, 12).Value 'N=D c.Offset(, 5).Value = cc.Offset(, 15).Value 'Q=F c.Offset(, 6).Value = cc.Offset(, 16).Value 'R=G End If End If Next Next tab1.Close 0 End Sub
Ну вот под напильник. Перебираю ячейки - если строк не тысячи, то скорости хватает. Поставьте свой путь в Set tab1 = GetObject("c:\Temp\gost\Таблица 1.xls") и отследите, то ли вставляется:
Code
Option Explicit
Sub rabota_dlja_gostja() Dim r As Range, rr As Range, c As Range, cc As Range Dim tab1 As Object Set r = [a1].CurrentRegion Set r = r.Offset(2, 0).Resize(r.Rows.Count - 2, r.Columns.Count) 'сдвиг выбора таблицы на строки ниже и низ затем на 2 строки выше
Set tab1 = GetObject("c:\Temp\gost\Таблица 1.xls") Set rr = tab1.Sheets(1).[a1].CurrentRegion Set rr = rr.Offset(5, 0).Resize(rr.Rows.Count - 5, rr.Columns.Count) 'сдвиг выбора таблицы на строки ниже и низ затем на 5 строки выше For Each c In r.Columns(2).Cells For Each cc In rr.Columns(2).Cells If c.Value = cc.Value Then If c.Offset(, 4).Value <> cc.Offset(, 15).Value Then c.Offset(, 2).Value = cc.Offset(, 11).Value 'M=C c.Offset(, 3).Value = cc.Offset(, 12).Value 'N=D c.Offset(, 5).Value = cc.Offset(, 15).Value 'Q=F c.Offset(, 6).Value = cc.Offset(, 16).Value 'R=G End If End If Next Next tab1.Close 0 End Sub
Файл на ifolder И уже ниже. Добавил ещё отключение обновления экрана. Код запускать из второй таблицы по Alt+F8 или из редактора. Можно напильником кнопку выстругать
Хотя про добавление строк забыл... Но это нужно подробнее расписать - что куда добавлять. Вообще похоже, что это разные люди и разные задачи...
Файл на ifolder И уже ниже. Добавил ещё отключение обновления экрана. Код запускать из второй таблицы по Alt+F8 или из редактора. Можно напильником кнопку выстругать
Хотя про добавление строк забыл... Но это нужно подробнее расписать - что куда добавлять. Вообще похоже, что это разные люди и разные задачи...Hugo
Дата: Понедельник, 30.05.2011, 11:30 |
Сообщение № 12
Группа: Гости
Спасибо, народ, за помощь!!! Но в ходе тестирования выявил еще кои какие свои ошибки в постановке задачи.... Давайте доделаем, раз уж взялись =) Вобщем нужно что бы столбец Q отличался не только от F, но и от столбца Е. А так же хотелось бы, что бы при добавлении новых строк учитывалась только последняя строка с одинаковым номером вагона, т.к. таблица будет постоянно дополняться, и в итоге случится ситуация, что вагон снова пойдет по тем же станциям, а добавляться данные не будут....
ЗЫ: тестил на последнем екселевском файле от nilem
Спасибо, народ, за помощь!!! Но в ходе тестирования выявил еще кои какие свои ошибки в постановке задачи.... Давайте доделаем, раз уж взялись =) Вобщем нужно что бы столбец Q отличался не только от F, но и от столбца Е. А так же хотелось бы, что бы при добавлении новых строк учитывалась только последняя строка с одинаковым номером вагона, т.к. таблица будет постоянно дополняться, и в итоге случится ситуация, что вагон снова пойдет по тем же станциям, а добавляться данные не будут....
ЗЫ: тестил на последнем екселевском файле от nilemГость
Нет, у меня нет добавления. В принципе, несложно добавить добавление - перебирать во внешнем цикле тот лист, из которого нужно добавить, и если пары не нашлось - то текущую строку добавляем во второй лист. Но мне сейчас вникать/доделывать недосуг...
Нет, у меня нет добавления. В принципе, несложно добавить добавление - перебирать во внешнем цикле тот лист, из которого нужно добавить, и если пары не нашлось - то текущую строку добавляем во второй лист. Но мне сейчас вникать/доделывать недосуг...Hugo