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

Вход

Регистрация

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

 

= Мир MS Excel/Поиск двух подобных строк и их взаимное удаление - Мир MS Excel

Старая форма входа
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Модератор форума: китин, _Boroda_  
Поиск двух подобных строк и их взаимное удаление
SergeyKorotun Дата: Понедельник, 01.07.2013, 18:55 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 301
Репутация: 15 ±
Замечаний: 0% ±

Excel 2007
Вот такая задача:
Найти строку с priz=1, считать значения kod, sum, date, ozn и найти строку с точно такими же значениями kod, sum, date, ozn, но с priz=0 или priz="" и в случае удачного поиска удалить обе строки, иначе строку с priz=1 поместить на 2 лист.
Реальная таблица не упорядочена.
Если строке с priz=1 будет соответствовать несколько строк с priz=0 или priz="", удалить нужно только одну строку.
Если условие priz=0 или priz="" усложняет задачу, можно заменить priz="" на priz=0
К сообщению приложен файл: 0779553.xlsx (8.7 Kb)


Сообщение отредактировал SergeyKorotun - Понедельник, 01.07.2013, 18:56
 
Ответить
СообщениеВот такая задача:
Найти строку с priz=1, считать значения kod, sum, date, ozn и найти строку с точно такими же значениями kod, sum, date, ozn, но с priz=0 или priz="" и в случае удачного поиска удалить обе строки, иначе строку с priz=1 поместить на 2 лист.
Реальная таблица не упорядочена.
Если строке с priz=1 будет соответствовать несколько строк с priz=0 или priz="", удалить нужно только одну строку.
Если условие priz=0 или priz="" усложняет задачу, можно заменить priz="" на priz=0

Автор - SergeyKorotun
Дата добавления - 01.07.2013 в 18:55
Pelena Дата: Понедельник, 01.07.2013, 19:00 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19409
Репутация: 4558 ±
Замечаний: ±

Excel 365 & Mac Excel
SergeyKorotun, формулы не могут удалять строки.
Перенести тему в ВОПРОСЫ ПО VBA?


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеSergeyKorotun, формулы не могут удалять строки.
Перенести тему в ВОПРОСЫ ПО VBA?

Автор - Pelena
Дата добавления - 01.07.2013 в 19:00
SergeyKorotun Дата: Понедельник, 01.07.2013, 19:09 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 301
Репутация: 15 ±
Замечаний: 0% ±

Excel 2007
можно перенести, а могу и условие задачи изменить: если пара есть, обе строки копируем на лист 4 (сначала строку с priz=0 или priz="", затем с priz=1). Строки с priz=0 или priz="", для которых нет пары, скопировать на лист 2. Строки с priz=1, для которых нет пары, скопировать на лист 3.


Сообщение отредактировал SergeyKorotun - Понедельник, 01.07.2013, 20:10
 
Ответить
Сообщениеможно перенести, а могу и условие задачи изменить: если пара есть, обе строки копируем на лист 4 (сначала строку с priz=0 или priz="", затем с priz=1). Строки с priz=0 или priz="", для которых нет пары, скопировать на лист 2. Строки с priz=1, для которых нет пары, скопировать на лист 3.

Автор - SergeyKorotun
Дата добавления - 01.07.2013 в 19:09
vikttur Дата: Понедельник, 01.07.2013, 19:18 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2941
Репутация: 526 ±
Замечаний: 0% ±

Читали?
Цитата (Pelena)
формулы не могут удалять строки

Копировать - можно, но без удаления в исходном диапазоне.
 
Ответить
СообщениеЧитали?
Цитата (Pelena)
формулы не могут удалять строки

Копировать - можно, но без удаления в исходном диапазоне.

Автор - vikttur
Дата добавления - 01.07.2013 в 19:18
SergeyKorotun Дата: Понедельник, 01.07.2013, 20:12 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 301
Репутация: 15 ±
Замечаний: 0% ±

Excel 2007
подправил 3 сообщение
 
Ответить
Сообщениеподправил 3 сообщение

Автор - SergeyKorotun
Дата добавления - 01.07.2013 в 20:12
SergeyKorotun Дата: Воскресенье, 07.07.2013, 22:39 | Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 301
Репутация: 15 ±
Замечаний: 0% ±

Excel 2007
Цитата
Вот такая задача:
Найти строку с priz=1, считать значения kod, sum, date, ozn и найти строку с точно такими же значениями kod, sum, date, ozn, но с priz=0 или priz="" и в случае удачного поиска удалить обе строки, иначе строку с priz=1 поместить на 2 лист.
Реальная таблица не упорядочена.
Если строке с priz=1 будет соответствовать несколько строк с priz=0 или priz="", удалить нужно только одну строку с priz=0 (соответствующую строку с priz=1 также нужно удалить).
Если условие priz=0 или priz="" усложняет задачу, можно заменить priz="" на priz=0


Если это сложно, то выделенное жирным шрифтом можно не реализовывать.
Для упрощения еще могу исходные данные с priz=0 или priz="" помещать на один лист, а строки с priz=1 на другой лист.


Сообщение отредактировал SergeyKorotun - Воскресенье, 07.07.2013, 23:22
 
Ответить
Сообщение
Цитата
Вот такая задача:
Найти строку с priz=1, считать значения kod, sum, date, ozn и найти строку с точно такими же значениями kod, sum, date, ozn, но с priz=0 или priz="" и в случае удачного поиска удалить обе строки, иначе строку с priz=1 поместить на 2 лист.
Реальная таблица не упорядочена.
Если строке с priz=1 будет соответствовать несколько строк с priz=0 или priz="", удалить нужно только одну строку с priz=0 (соответствующую строку с priz=1 также нужно удалить).
Если условие priz=0 или priz="" усложняет задачу, можно заменить priz="" на priz=0


Если это сложно, то выделенное жирным шрифтом можно не реализовывать.
Для упрощения еще могу исходные данные с priz=0 или priz="" помещать на один лист, а строки с priz=1 на другой лист.

Автор - SergeyKorotun
Дата добавления - 07.07.2013 в 22:39
AndreTM Дата: Понедельник, 08.07.2013, 08:31 | Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 501 ±
Замечаний: 0% ±

2003 & 2010
Это не сложно. SQL-запросами это делается вообще легко.
Если ещё можно добавить ключевое поле - то запросы получатся практически в одну строчку...


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеЭто не сложно. SQL-запросами это делается вообще легко.
Если ещё можно добавить ключевое поле - то запросы получатся практически в одну строчку...

Автор - AndreTM
Дата добавления - 08.07.2013 в 08:31
SergeyKorotun Дата: Понедельник, 08.07.2013, 12:04 | Сообщение № 8
Группа: Гости
Еще несколько месяцев назад оракловские базы были в каждом отделении свои. Ночью данные из локальных баз передавались в ЦБД. Сейчас локальных баз нет, все отделения через ПО работают в реальном времени с ЦБД. Доступа на запросы к этим базам нет. С ПО можно сформировать некоторые отчеты и сохранить их в excel. Так что теперь SQL не воспользуешся.
В одну строчку - вряд ли. Надо применять ранжирующие функции, так как нужно удалять не все строки с priz=0/priz="", соответствующие priz=1, а только одну.
 
Ответить
СообщениеЕще несколько месяцев назад оракловские базы были в каждом отделении свои. Ночью данные из локальных баз передавались в ЦБД. Сейчас локальных баз нет, все отделения через ПО работают в реальном времени с ЦБД. Доступа на запросы к этим базам нет. С ПО можно сформировать некоторые отчеты и сохранить их в excel. Так что теперь SQL не воспользуешся.
В одну строчку - вряд ли. Надо применять ранжирующие функции, так как нужно удалять не все строки с priz=0/priz="", соответствующие priz=1, а только одну.

Автор - SergeyKorotun
Дата добавления - 08.07.2013 в 12:04
AndreTM Дата: Понедельник, 08.07.2013, 12:08 | Сообщение № 9
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 501 ±
Замечаний: 0% ±

2003 & 2010
А причём здесь Оракл? smile Есть JetSQL.
Вот я у вас и спрашиваю - можно ли в вашу табличку добавить уникальный ключ (например, столбец с номерами строк)?
И всё у нас получится.


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеА причём здесь Оракл? smile Есть JetSQL.
Вот я у вас и спрашиваю - можно ли в вашу табличку добавить уникальный ключ (например, столбец с номерами строк)?
И всё у нас получится.

Автор - AndreTM
Дата добавления - 08.07.2013 в 12:08
SergeyKorotun Дата: Понедельник, 08.07.2013, 13:55 | Сообщение № 10
Группа: Гости
можно добавлять все что угодно
 
Ответить
Сообщениеможно добавлять все что угодно

Автор - SergeyKorotun
Дата добавления - 08.07.2013 в 13:55
Матраскин Дата: Понедельник, 08.07.2013, 17:21 | Сообщение № 11
Группа: Друзья
Ранг: Обитатель
Сообщений: 375
Репутация: 81 ±
Замечаний: 0% ±

20xx
Цитата (SergeyKorotun)
сформировать некоторые отчеты и сохранить их в excel.

и сохранить в Access.
Можно и макрос, но он ,в зависимости от кол-ва данных, может работать от Долго до Очень долго


в интернете опять кто-то не прав
 
Ответить
Сообщение
Цитата (SergeyKorotun)
сформировать некоторые отчеты и сохранить их в excel.

и сохранить в Access.
Можно и макрос, но он ,в зависимости от кол-ва данных, может работать от Долго до Очень долго

Автор - Матраскин
Дата добавления - 08.07.2013 в 17:21
AndreTM Дата: Понедельник, 08.07.2013, 17:42 | Сообщение № 12
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 501 ±
Замечаний: 0% ±

2003 & 2010
Проверяйте (исполнение соответствует условиям сообщения №3):
К сообщению приложен файл: 0779553-1.xlsm (32.7 Kb)


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеПроверяйте (исполнение соответствует условиям сообщения №3):

Автор - AndreTM
Дата добавления - 08.07.2013 в 17:42
SergeyKorotun Дата: Среда, 10.07.2013, 01:01 | Сообщение № 13
Группа: Проверенные
Ранг: Обитатель
Сообщений: 301
Репутация: 15 ±
Замечаний: 0% ±

Excel 2007
Спасибо! Работает.
Можно еще добавить в макрос создания листов 2, 3 и 4 в случае их отсутствия.
Что еще кроме макроса нужно перенести в новый xlsx файл? В новой книге при выполнении макроса получаю на строке ADO As New ADO ошибку Compile error: User-defined type not defined
 
Ответить
СообщениеСпасибо! Работает.
Можно еще добавить в макрос создания листов 2, 3 и 4 в случае их отсутствия.
Что еще кроме макроса нужно перенести в новый xlsx файл? В новой книге при выполнении макроса получаю на строке ADO As New ADO ошибку Compile error: User-defined type not defined

Автор - SergeyKorotun
Дата добавления - 10.07.2013 в 01:01
AndreTM Дата: Среда, 10.07.2013, 06:06 | Сообщение № 14
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 501 ±
Замечаний: 0% ±

2003 & 2010
Надо ещё перенести модуль класса ADO. Или импортировать, взяв отсюда.

А по-идее, вам надо не копировать каждый раз макросы и модули в новую книгу, а сделать в одной рабочей книге импорт из внешних файлов, и в этой же книге собрать весь функционал (обработку, классы и т.п.). То есть получили сформированные XLS-файлы - импортировали данные из них - обработали/раскидали - получили отчёты.


Skype: andre.tm.007
Donate: Qiwi: 9517375010


Сообщение отредактировал AndreTM - Среда, 10.07.2013, 10:23
 
Ответить
СообщениеНадо ещё перенести модуль класса ADO. Или импортировать, взяв отсюда.

А по-идее, вам надо не копировать каждый раз макросы и модули в новую книгу, а сделать в одной рабочей книге импорт из внешних файлов, и в этой же книге собрать весь функционал (обработку, классы и т.п.). То есть получили сформированные XLS-файлы - импортировали данные из них - обработали/раскидали - получили отчёты.

Автор - AndreTM
Дата добавления - 10.07.2013 в 06:06
SergeyKorotun Дата: Четверг, 11.07.2013, 16:26 | Сообщение № 15
Группа: Проверенные
Ранг: Обитатель
Сообщений: 301
Репутация: 15 ±
Замечаний: 0% ±

Excel 2007
AndreTM, в 3 посте я описал не все условия, а только то, что можно было изменить в 1 посте. Условие с 1 поста "Если строке с priz=1 будет соответствовать несколько строк с priz=0 или priz="", удалить нужно только одну строку" тоже должно выполняться. В приложенном файле описано, какие строки на какой лист должны попасть и почему.
В оракле я использовал ранжирующую функцию. Все строки с priz=0 или priz="" разбивал на группы по kod, sum, date, ozn и строки каждой группы нумеровал начиная с 1. Точно также поступал со строками с priz=1. Потом к условию t1.kod=t.kod AND t1.sum=t.sum AND t1.tdate=t.tdate AND t1.ozn=t.ozn нужно добавить AND t1.rang=t.rang
К сообщению приложен файл: test.xlsm (34.0 Kb)
 
Ответить
СообщениеAndreTM, в 3 посте я описал не все условия, а только то, что можно было изменить в 1 посте. Условие с 1 поста "Если строке с priz=1 будет соответствовать несколько строк с priz=0 или priz="", удалить нужно только одну строку" тоже должно выполняться. В приложенном файле описано, какие строки на какой лист должны попасть и почему.
В оракле я использовал ранжирующую функцию. Все строки с priz=0 или priz="" разбивал на группы по kod, sum, date, ozn и строки каждой группы нумеровал начиная с 1. Точно также поступал со строками с priz=1. Потом к условию t1.kod=t.kod AND t1.sum=t.sum AND t1.tdate=t.tdate AND t1.ozn=t.ozn нужно добавить AND t1.rang=t.rang

Автор - SergeyKorotun
Дата добавления - 11.07.2013 в 16:26
nilem Дата: Четверг, 11.07.2013, 19:13 | Сообщение № 16
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
А если все-таки со словарем?
так, например (запускать при активном листе Sheet1):


никак не получается сделать, чтобы были и спойлер, и код
К сообщению приложен файл: _test.xlsm (24.6 Kb)


Яндекс.Деньги 4100159601573

Сообщение отредактировал nilem - Четверг, 11.07.2013, 20:14
 
Ответить
СообщениеА если все-таки со словарем?
так, например (запускать при активном листе Sheet1):


никак не получается сделать, чтобы были и спойлер, и код

Автор - nilem
Дата добавления - 11.07.2013 в 19:13
Serge_007 Дата: Четверг, 11.07.2013, 19:50 | Сообщение № 17
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
не получается сделать, чтобы были и спойлер, и код
Николай, а что именно не получается?


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
не получается сделать, чтобы были и спойлер, и код
Николай, а что именно не получается?

Автор - Serge_007
Дата добавления - 11.07.2013 в 19:50
SergeyKorotun Дата: Четверг, 11.07.2013, 20:00 | Сообщение № 18
Группа: Проверенные
Ранг: Обитатель
Сообщений: 301
Репутация: 15 ±
Замечаний: 0% ±

Excel 2007
Вроде бы верно, но буду еще тестировать.
Хотелось бы и через запрос получить решение, мне там проще было бы разобраться, немного знаком с ораклом.
Пример упрощенный, в реале столбцов значительно больше, строк - десятки тысяч.
 
Ответить
СообщениеВроде бы верно, но буду еще тестировать.
Хотелось бы и через запрос получить решение, мне там проще было бы разобраться, немного знаком с ораклом.
Пример упрощенный, в реале столбцов значительно больше, строк - десятки тысяч.

Автор - SergeyKorotun
Дата добавления - 11.07.2013 в 20:00
nilem Дата: Четверг, 11.07.2013, 20:03 | Сообщение № 19
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
Сергей, сейчас вроде бы нормально, но все-таки без отступов (привередничаю? smile )
а по началу было совсем не похоже на код - просто текст мелким шрифтом


Яндекс.Деньги 4100159601573
 
Ответить
СообщениеСергей, сейчас вроде бы нормально, но все-таки без отступов (привередничаю? smile )
а по началу было совсем не похоже на код - просто текст мелким шрифтом

Автор - nilem
Дата добавления - 11.07.2013 в 20:03
nilem Дата: Четверг, 11.07.2013, 20:13 | Сообщение № 20
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
SergeyKorotun,
если данных оч. много, то работать будет медленно (из-за Cells. С массивами код будет в 2 раза длиннее, и со всякими x(i, k), y(j, n) - точно будет непонятно)
Можно, как у вас, записывать номера листов в столбик, а потом другим макросом быстро раскидывать по листам.


Яндекс.Деньги 4100159601573
 
Ответить
СообщениеSergeyKorotun,
если данных оч. много, то работать будет медленно (из-за Cells. С массивами код будет в 2 раза длиннее, и со всякими x(i, k), y(j, n) - точно будет непонятно)
Можно, как у вас, записывать номера листов в столбик, а потом другим макросом быстро раскидывать по листам.

Автор - nilem
Дата добавления - 11.07.2013 в 20:13
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Поиск:

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