Имеется "Лист1" на котором в столбце "А" артикулы товара. В столбцах с "В" по "I" внесены данные про этот товар.
Имеется "Лист2" на котором в столбце "А" артикулы товара. В столбцах с "В" по "I" внесены дополнительные данные про этот товар.
На "Лист1" и "Лист2" имеются товары с одинаовым артикулом.
Задача состоит в том, что бы рассортировать товары.
Основной "Лист1"
Если артикул на "Лист2" совпадает с артикулом "Лист1" то данные "Лист2" ячеек с "А" по "I" копируются в "Лист1" в ячейки с "K" по "S"
При этом нужно рассортировать "Лист1" на "Лист3" и "Лист4" следующим образом
- на "Лист3" находятся данные к которым нашлись дополнительные данные - на "Лист4" находятся данные к которым не нашлись дополнительные данные
(Хотя можно и на одном листе, я потом отсортирую и разнесу по разным листам в ручную.)
_____________________________________
Макрос я сделал, но он построен как то не так, я прикидывал скорость сортировки на 10-15 тыс. строк товара - будут уходить недели!!!
Подскажите как его можно оптимизировать?
В приложении макрос2 сортировка 100 строк (по "y=101").
Данные не принципиально в каких столбцах, в разных фаилах по разному, в одних это столбцы с "А" по "В" а в других с "А" по "Е", дополнительные данные так же.
В столбце "А" могут быть как цифры так и буквы и их смесь.
Здравствуйте. Задача стоит следующая:
Имеется "Лист1" на котором в столбце "А" артикулы товара. В столбцах с "В" по "I" внесены данные про этот товар.
Имеется "Лист2" на котором в столбце "А" артикулы товара. В столбцах с "В" по "I" внесены дополнительные данные про этот товар.
На "Лист1" и "Лист2" имеются товары с одинаовым артикулом.
Задача состоит в том, что бы рассортировать товары.
Основной "Лист1"
Если артикул на "Лист2" совпадает с артикулом "Лист1" то данные "Лист2" ячеек с "А" по "I" копируются в "Лист1" в ячейки с "K" по "S"
При этом нужно рассортировать "Лист1" на "Лист3" и "Лист4" следующим образом
- на "Лист3" находятся данные к которым нашлись дополнительные данные - на "Лист4" находятся данные к которым не нашлись дополнительные данные
(Хотя можно и на одном листе, я потом отсортирую и разнесу по разным листам в ручную.)
_____________________________________
Макрос я сделал, но он построен как то не так, я прикидывал скорость сортировки на 10-15 тыс. строк товара - будут уходить недели!!!
Подскажите как его можно оптимизировать?
В приложении макрос2 сортировка 100 строк (по "y=101").
Данные не принципиально в каких столбцах, в разных фаилах по разному, в одних это столбцы с "А" по "В" а в других с "А" по "Е", дополнительные данные так же.
В столбце "А" могут быть как цифры так и буквы и их смесь.cherkas
Все необходимые операции с Вашими делаются очень просто в ACCESS.
Подскажите как? Я Access немножечко помню, но как такое рассортировать сейчас понятия не имею (пользовался Access-ом лет 10 назад что то подзабылось)
Цитата
Все необходимые операции с Вашими делаются очень просто в ACCESS.
Подскажите как? Я Access немножечко помню, но как такое рассортировать сейчас понятия не имею (пользовался Access-ом лет 10 назад что то подзабылось)cherkas
Сообщение отредактировал cherkas - Вторник, 26.03.2013, 08:57
Public Sub www() Dim d As Object, i&, a, b Dim sh As Worksheet, sh1 As Worksheet Set sh = Sheets("1"): Set sh1 = Sheets("2") Set d = CreateObject("scripting.dictionary") a = sh.[a1].CurrentRegion.Columns(1) b = sh1.[a1].CurrentRegion.Columns(1) For i = 1 To UBound(a) d.Item(a(i, 1)) = i Next For i = 1 To UBound(b) If d.exists(b(i, 1)) Then sh1.Range(sh1.Cells(i, 2), sh1.Cells(i, 10)).Copy sh.Cells(d.Item(b(i, 1)), 11) sh.Range(sh.Cells(d.Item(b(i, 1)), 1), sh.Cells(d.Item(b(i, 1)), 20)).Copy Sheets("готовое").Cells(Rows.Count, 1).End(xlUp)(2) Else sh.Range(sh.Cells(i, 1), sh.Cells(i, 10)).Copy Sheets("обработка").Cells(Rows.Count, 1).End(xlUp)(2) sh1.Range(sh1.Cells(i, 1), sh1.Cells(i, 10)).Copy Sheets("без совпадений").Cells(Rows.Count, 1).End(xlUp)(2) End If Next Set d = Nothing End Sub
[/vba]
Пример можно было бы и получше сделать... [vba]
Код
Public Sub www() Dim d As Object, i&, a, b Dim sh As Worksheet, sh1 As Worksheet Set sh = Sheets("1"): Set sh1 = Sheets("2") Set d = CreateObject("scripting.dictionary") a = sh.[a1].CurrentRegion.Columns(1) b = sh1.[a1].CurrentRegion.Columns(1) For i = 1 To UBound(a) d.Item(a(i, 1)) = i Next For i = 1 To UBound(b) If d.exists(b(i, 1)) Then sh1.Range(sh1.Cells(i, 2), sh1.Cells(i, 10)).Copy sh.Cells(d.Item(b(i, 1)), 11) sh.Range(sh.Cells(d.Item(b(i, 1)), 1), sh.Cells(d.Item(b(i, 1)), 20)).Copy Sheets("готовое").Cells(Rows.Count, 1).End(xlUp)(2) Else sh.Range(sh.Cells(i, 1), sh.Cells(i, 10)).Copy Sheets("обработка").Cells(Rows.Count, 1).End(xlUp)(2) sh1.Range(sh1.Cells(i, 1), sh1.Cells(i, 10)).Copy Sheets("без совпадений").Cells(Rows.Count, 1).End(xlUp)(2) End If Next Set d = Nothing End Sub
Вот пример того что нужно рассортировать. Скачать (1.35 М)
С Access вроде бы получается, но есть проблема, много ячеек выбрасывается из за не соответствия типа данных. Если в столбце и числа и буквы, то столбец определяется как двойное с плавающей запятой и все буквенные строки выбрасываются. Изменить тип данных при экспорте не получается. (Ну это наверное на другой форум).
Вот пример того что нужно рассортировать. Скачать (1.35 М)
С Access вроде бы получается, но есть проблема, много ячеек выбрасывается из за не соответствия типа данных. Если в столбце и числа и буквы, то столбец определяется как двойное с плавающей запятой и все буквенные строки выбрасываются. Изменить тип данных при экспорте не получается. (Ну это наверное на другой форум).cherkas
Сообщение отредактировал cherkas - Вторник, 26.03.2013, 10:26