Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Поиск значения в строке и перенос всей строки на другой лист - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Поиск значения в строке и перенос всей строки на другой лист
keechva Дата: Пятница, 23.08.2013, 07:40 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте. Прошу помочь вот по такой задачке. Есть таблица(около 800000 строк), надо ее проверить по нескольким условиям. Условия я добавил в столбцах справа. С чем у меня проблема: нужен макрос который будет среди этих условий находить "ЛОЖЬ" и переносить всю строку с этим "ЛОЖЬ" в другую книгу (не лист).
А если еще и подскажете как в фоновом режиме сделать, вообще прекрасно будет.
 
Ответить
СообщениеЗдравствуйте. Прошу помочь вот по такой задачке. Есть таблица(около 800000 строк), надо ее проверить по нескольким условиям. Условия я добавил в столбцах справа. С чем у меня проблема: нужен макрос который будет среди этих условий находить "ЛОЖЬ" и переносить всю строку с этим "ЛОЖЬ" в другую книгу (не лист).
А если еще и подскажете как в фоновом режиме сделать, вообще прекрасно будет.

Автор - keechva
Дата добавления - 23.08.2013 в 07:40
Матрёна Дата: Пятница, 23.08.2013, 07:49 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 398
Репутация: 40 ±
Замечаний: 0% ±

как в фоновом режиме сделать

[vba]
Код
Sub ZZZZZZ()
Application.ScreenUpdating = False 'ЗАПРЕТИЛИ EXCEL "ДРЫГАТЬ" ЭКРАН
Application.DisplayAlerts = False 'ЗАПРЕТИЛИ EXCEL ЗАДАВАТЬ ВОПРОСЫ
........................
Application.ScreenUpdating = True 'РАЗРЕШИЛИ EXCEL "ДРЫГАТЬ" ЭКРАН
Application.DisplayAlerts = True 'РАЗРЕШИЛИ EXCEL ЗАДАВАТЬ ВОПРОСЫ
End Sub
[/vba]

А где файл?
 
Ответить
Сообщение
как в фоновом режиме сделать

[vba]
Код
Sub ZZZZZZ()
Application.ScreenUpdating = False 'ЗАПРЕТИЛИ EXCEL "ДРЫГАТЬ" ЭКРАН
Application.DisplayAlerts = False 'ЗАПРЕТИЛИ EXCEL ЗАДАВАТЬ ВОПРОСЫ
........................
Application.ScreenUpdating = True 'РАЗРЕШИЛИ EXCEL "ДРЫГАТЬ" ЭКРАН
Application.DisplayAlerts = True 'РАЗРЕШИЛИ EXCEL ЗАДАВАТЬ ВОПРОСЫ
End Sub
[/vba]

А где файл?

Автор - Матрёна
Дата добавления - 23.08.2013 в 07:49
keechva Дата: Пятница, 23.08.2013, 07:52 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Почему-то не прикрепился в первом посте
К сообщению приложен файл: LITE.xlsx (26.0 Kb)
 
Ответить
СообщениеПочему-то не прикрепился в первом посте

Автор - keechva
Дата добавления - 23.08.2013 в 07:52
Матрёна Дата: Пятница, 23.08.2013, 08:00 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 398
Репутация: 40 ±
Замечаний: 0% ±

Столбы для поиска "ЛОЖЬ" всегда: CF~CV?
Достаточно наличия одной позиции "ЛОЖЬ" в этих столбах, чтобы строку "съел" другой файл?
 
Ответить
СообщениеСтолбы для поиска "ЛОЖЬ" всегда: CF~CV?
Достаточно наличия одной позиции "ЛОЖЬ" в этих столбах, чтобы строку "съел" другой файл?

Автор - Матрёна
Дата добавления - 23.08.2013 в 08:00
keechva Дата: Пятница, 23.08.2013, 08:03 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Начинаться точно от CF, а вот заканчиваться может в дальнейшем будут и дальше. но там я подправить, думаю, сам смогу.
Да, достаточно одной "ЛОЖЬ" в любом из столбцов. Значит строка с косячными данными, и надо её видеть.

Очень прошу учесть тот факт, что в оригинальном файле около 800000 строк.


Сообщение отредактировал keechva - Пятница, 23.08.2013, 08:04
 
Ответить
СообщениеНачинаться точно от CF, а вот заканчиваться может в дальнейшем будут и дальше. но там я подправить, думаю, сам смогу.
Да, достаточно одной "ЛОЖЬ" в любом из столбцов. Значит строка с косячными данными, и надо её видеть.

Очень прошу учесть тот факт, что в оригинальном файле около 800000 строк.

Автор - keechva
Дата добавления - 23.08.2013 в 08:03
Матрёна Дата: Пятница, 23.08.2013, 08:07 | Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 398
Репутация: 40 ±
Замечаний: 0% ±

В таком разе лучше в макросе обычным способом определять количество столбов в таблице, т.е - динамически.
Количество строк - также: динамически.


Сообщение отредактировал Матрёна - Пятница, 23.08.2013, 08:08
 
Ответить
СообщениеВ таком разе лучше в макросе обычным способом определять количество столбов в таблице, т.е - динамически.
Количество строк - также: динамически.

Автор - Матрёна
Дата добавления - 23.08.2013 в 08:07
Матрёна Дата: Пятница, 23.08.2013, 08:09 | Сообщение № 7
Группа: Проверенные
Ранг: Обитатель
Сообщений: 398
Репутация: 40 ±
Замечаний: 0% ±

Когда "сдавать"?
 
Ответить
СообщениеКогда "сдавать"?

Автор - Матрёна
Дата добавления - 23.08.2013 в 08:09
keechva Дата: Пятница, 23.08.2013, 08:17 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Через 5 часов =)
 
Ответить
СообщениеЧерез 5 часов =)

Автор - keechva
Дата добавления - 23.08.2013 в 08:17
Матрёна Дата: Пятница, 23.08.2013, 08:35 | Сообщение № 9
Группа: Проверенные
Ранг: Обитатель
Сообщений: 398
Репутация: 40 ±
Замечаний: 0% ±

Заглядывайте на форум к назначенному часу.

Может быть, кто-нибудь и раньше сваяет.
 
Ответить
СообщениеЗаглядывайте на форум к назначенному часу.

Может быть, кто-нибудь и раньше сваяет.

Автор - Матрёна
Дата добавления - 23.08.2013 в 08:35
M73568 Дата: Пятница, 23.08.2013, 10:40 | Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 197
Репутация: 46 ±
Замечаний: 0% ±

2007-2013
для 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], затем жмём "Ок" и ещё раз "Ок"

ЗЫ Можно всё это сразу поправить в прилагаемом файле, открыв его в Блокноте, и потом просто открывать этот файл в Экселе ;)
К сообщению приложен файл: LITE.dqy (1.9 Kb)


Сообщение отредактировал M73568 - Пятница, 23.08.2013, 12:37
 
Ответить
Сообщениедля 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
Дата добавления - 23.08.2013 в 10:40
Hugo Дата: Пятница, 23.08.2013, 11:39 | Сообщение № 11
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3703
Репутация: 792 ±
Замечаний: 0% ±

365
800000 строк, в каждой 17 (18) формул...
Ну тогда ещё одна роли не сыграет :)
Протягиваем где-то сбоку
Код
=COUNTIF(CF2:CV2,FALSE)
Сортируем (фильтровать >0 думаю не получится), переносим.
Или всё же только копируем, как запросом? :)


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
Сообщение800000 строк, в каждой 17 (18) формул...
Ну тогда ещё одна роли не сыграет :)
Протягиваем где-то сбоку
Код
=COUNTIF(CF2:CV2,FALSE)
Сортируем (фильтровать >0 думаю не получится), переносим.
Или всё же только копируем, как запросом? :)

Автор - Hugo
Дата добавления - 23.08.2013 в 11:39
SkyPro Дата: Пятница, 23.08.2013, 12:08 | Сообщение № 12
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
Так?
К сообщению приложен файл: LITE2.xlsm (34.9 Kb)


skypro1111@gmail.com
 
Ответить
СообщениеТак?

Автор - SkyPro
Дата добавления - 23.08.2013 в 12:08
keechva Дата: Пятница, 23.08.2013, 12:32 | Сообщение № 13
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
выбираем заранее скачанный файл из вложения LITE.dqy


Простите, не вижу файла.

Сейчас все опробую
 
Ответить
Сообщение
выбираем заранее скачанный файл из вложения LITE.dqy


Простите, не вижу файла.

Сейчас все опробую

Автор - keechva
Дата добавления - 23.08.2013 в 12:32
M73568 Дата: Пятница, 23.08.2013, 12:38 | Сообщение № 14
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 197
Репутация: 46 ±
Замечаний: 0% ±

2007-2013
Простите, не вижу файла.

Добавил вложение в свой предыдущий пост
 
Ответить
Сообщение
Простите, не вижу файла.

Добавил вложение в свой предыдущий пост

Автор - M73568
Дата добавления - 23.08.2013 в 12:38
keechva Дата: Пятница, 23.08.2013, 12:39 | Сообщение № 15
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Возможно мне следовало указать что эти условия, я добавлял сам. В выгрузке изначально их нет.
 
Ответить
СообщениеВозможно мне следовало указать что эти условия, я добавлял сам. В выгрузке изначально их нет.

Автор - keechva
Дата добавления - 23.08.2013 в 12:39
SkyPro Дата: Пятница, 23.08.2013, 13:20 | Сообщение № 16
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
Может лучше перед самой выгрузкой в селекте прописать все условия?
Или по методу, который предлжил M73568:[vba]
Код

SELECT * FROM `<путь к файлу источнику>\LITE.xlsx`.`DataBase2`
WHERE NOT "условие1"   
OR   
NOT "условие2"
    и т.д.;
[/vba]
В SQL так же можно использовать агрегатные функции (sum, count, ..)
Или используйте макрос, который я приложил выше.
Правда на 800 000 строк он будет долго работать.


skypro1111@gmail.com

Сообщение отредактировал SkyPro - Пятница, 23.08.2013, 13:29
 
Ответить
СообщениеМожет лучше перед самой выгрузкой в селекте прописать все условия?
Или по методу, который предлжил M73568:[vba]
Код

SELECT * FROM `<путь к файлу источнику>\LITE.xlsx`.`DataBase2`
WHERE NOT "условие1"   
OR   
NOT "условие2"
    и т.д.;
[/vba]
В SQL так же можно использовать агрегатные функции (sum, count, ..)
Или используйте макрос, который я приложил выше.
Правда на 800 000 строк он будет долго работать.

Автор - SkyPro
Дата добавления - 23.08.2013 в 13:20
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!