Здравствуйте. Прошу помочь вот по такой задачке. Есть таблица(около 800000 строк), надо ее проверить по нескольким условиям. Условия я добавил в столбцах справа. С чем у меня проблема: нужен макрос который будет среди этих условий находить "ЛОЖЬ" и переносить всю строку с этим "ЛОЖЬ" в другую книгу (не лист). А если еще и подскажете как в фоновом режиме сделать, вообще прекрасно будет.
Здравствуйте. Прошу помочь вот по такой задачке. Есть таблица(около 800000 строк), надо ее проверить по нескольким условиям. Условия я добавил в столбцах справа. С чем у меня проблема: нужен макрос который будет среди этих условий находить "ЛОЖЬ" и переносить всю строку с этим "ЛОЖЬ" в другую книгу (не лист). А если еще и подскажете как в фоновом режиме сделать, вообще прекрасно будет.keechva
Начинаться точно от CF, а вот заканчиваться может в дальнейшем будут и дальше. но там я подправить, думаю, сам смогу. Да, достаточно одной "ЛОЖЬ" в любом из столбцов. Значит строка с косячными данными, и надо её видеть.
Очень прошу учесть тот факт, что в оригинальном файле около 800000 строк.
Начинаться точно от CF, а вот заканчиваться может в дальнейшем будут и дальше. но там я подправить, думаю, сам смогу. Да, достаточно одной "ЛОЖЬ" в любом из столбцов. Значит строка с косячными данными, и надо её видеть.
Очень прошу учесть тот факт, что в оригинальном файле около 800000 строк.keechva
Сообщение отредактировал keechva - Пятница, 23.08.2013, 08:04
В таком разе лучше в макросе обычным способом определять количество столбов в таблице, т.е - динамически. Количество строк - также: динамически.
В таком разе лучше в макросе обычным способом определять количество столбов в таблице, т.е - динамически. Количество строк - также: динамически.Матрёна
Сообщение отредактировал Матрёна - Пятница, 23.08.2013, 08:08
для 2007 и выше В исходном файле LITE.xlsx выделяем весь диапазон данных и даём ему имя, например DataBase2 (Ctrl+F3->"создать"->DataBase2->Ок). Далее открываем новую книгу, идём на вкладку "Данные", нажимаем "Существующие подключения", далее "найти другие...", затем выбираем заранее скачанный файл из вложения LITE.dqy и нажимаем "Открыть", затем нажимаем кнопку "Свойства" и переходим на вкладку "Определение", там исправляем строку подключения на [vba]
Код
DSN=Excel Files;DBQ=<путь к файлу источнику>\LITE.xlsx;DefaultDir=<путь к файлу источнику>;DriverId=1046;MaxBufferSize=2048;PageTimeout=5;
[/vba], где <путь к файлу источнику> путь где лежит исходный файл LITE.xlsx, далее меняем "текст команды" на [vba]
Код
SELECT * FROM `<путь к файлу источнику>\LITE.xlsx`.`DataBase2` WHERE (DataBase2.Условие1=0) OR (DataBase2.Условие2=0) OR (DataBase2.Условие6=0) OR (DataBase2.Условие6=0) OR (DataBase2.Условие8=0) OR (DataBase2.Условие9=0) OR (DataBase2.Условие12=0) OR (DataBase2.Условие13=0) OR (DataBase2.Условие14=0) OR (DataBase2.Условие15=0) OR (DataBase2.Условие16=0) OR (DataBase2.Условие17=0)
[/vba], затем жмём "Ок" и ещё раз "Ок"
ЗЫ Можно всё это сразу поправить в прилагаемом файле, открыв его в Блокноте, и потом просто открывать этот файл в Экселе
для 2007 и выше В исходном файле LITE.xlsx выделяем весь диапазон данных и даём ему имя, например DataBase2 (Ctrl+F3->"создать"->DataBase2->Ок). Далее открываем новую книгу, идём на вкладку "Данные", нажимаем "Существующие подключения", далее "найти другие...", затем выбираем заранее скачанный файл из вложения LITE.dqy и нажимаем "Открыть", затем нажимаем кнопку "Свойства" и переходим на вкладку "Определение", там исправляем строку подключения на [vba]
Код
DSN=Excel Files;DBQ=<путь к файлу источнику>\LITE.xlsx;DefaultDir=<путь к файлу источнику>;DriverId=1046;MaxBufferSize=2048;PageTimeout=5;
[/vba], где <путь к файлу источнику> путь где лежит исходный файл LITE.xlsx, далее меняем "текст команды" на [vba]
Код
SELECT * FROM `<путь к файлу источнику>\LITE.xlsx`.`DataBase2` WHERE (DataBase2.Условие1=0) OR (DataBase2.Условие2=0) OR (DataBase2.Условие6=0) OR (DataBase2.Условие6=0) OR (DataBase2.Условие8=0) OR (DataBase2.Условие9=0) OR (DataBase2.Условие12=0) OR (DataBase2.Условие13=0) OR (DataBase2.Условие14=0) OR (DataBase2.Условие15=0) OR (DataBase2.Условие16=0) OR (DataBase2.Условие17=0)
[/vba], затем жмём "Ок" и ещё раз "Ок"
ЗЫ Можно всё это сразу поправить в прилагаемом файле, открыв его в Блокноте, и потом просто открывать этот файл в Экселе M73568
Может лучше перед самой выгрузкой в селекте прописать все условия? Или по методу, который предлжил M73568:[vba]
Код
SELECT * FROM `<путь к файлу источнику>\LITE.xlsx`.`DataBase2` WHERE NOT "условие1" OR NOT "условие2" и т.д.;
[/vba] В SQL так же можно использовать агрегатные функции (sum, count, ..) Или используйте макрос, который я приложил выше. Правда на 800 000 строк он будет долго работать.
Может лучше перед самой выгрузкой в селекте прописать все условия? Или по методу, который предлжил M73568:[vba]
Код
SELECT * FROM `<путь к файлу источнику>\LITE.xlsx`.`DataBase2` WHERE NOT "условие1" OR NOT "условие2" и т.д.;
[/vba] В SQL так же можно использовать агрегатные функции (sum, count, ..) Или используйте макрос, который я приложил выше. Правда на 800 000 строк он будет долго работать.SkyPro
skypro1111@gmail.com
Сообщение отредактировал SkyPro - Пятница, 23.08.2013, 13:29