Страницы: 1
RSS
Удаление из столбца ,,С,, строки с шестью цифрами при условии совпадения 4 цифры
 
Каждая строка(комбинация) столбца ,,А,, ищет во всех строках столбца ,,С,, совпадения чисел(4 числа) и если находит  совпадения с четырьмя цифрами в строке(комбинации) то делается следующее при  условии:
Если   находятся совпадения в строках ,,С,, с четырьмя цифрами, то строка состоящая из шести чисел полностью   удаляется, а оставшиеся комбинации чисел столбца ,,С,,  стаются в нём, откуда   их можно копировать и перенести.

Столбец   ,,А,, состоит из различных   комбинаций чисел:
Есть   с 8 числами в строке
Есть   с 7 числами в строке
Есть   с 6 числами в строке
Столбец   ,,С,, состоит только из   комбинаций с шестью цифрами.

Столбец   ,,А,, хочет   отфильтровать(удалить ) из столбца ,,С,, строки с четырьмя совпадениями в одной строке. Нужен   Excel-макрос отрабатывающий такие манипуляции(действия) и умеющий   работать с   большим объёмом чисел и без тормозов.
Столбец   ,,А,, имеет около 8.000   комбинаций. Столбец   ,,С,, имеет около 500.000   комбинаций

Надеюсь   на Вашу помощь и поддержку. Спасибо Всем кто откликнулся и помог!
Меня   охватывает гордость и уважение к таким людям как Вы!
Ещё   раз СПАСИБО!!! У меня ,,Офис 2007,,

Просьба   пошагово объяснить как правильно работать с Макросом!
 
На другом листе покажите желаемый результат, из Вашего объяснения не совсем понятно
Цитата
Alex Neubauer написал:
Если   находятся совпадения в строках ,,С,, с четырьмя цифрами, то строка состоящая из шести чисел полностью   удаляется, а оставшиеся комбинации чисел столбца ,,С,,  стаются в нём, откуда   их можно копировать и перенести.
Удаляются из столбца "А" или "С".  
 
msi2102,
если в С есть данные совпадающее 4-мя значениями хоть с одной ячейкой в А эту ячейку в С - удалить

Alex Neubauer,
а вам действительно нужно чтобы быстро работало?
в А около 8 тыс записей в С около 500тыс. записей какая скорость работы будет считаться приемлемой?
(500000 х 8000 х 6 = минимум 24млрд. сравнений)
Изменено: Ігор Гончаренко - 19.05.2021 19:18:37
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
msi2102 написал:
На другом листе покажите желаемый результат, из Вашего объяснения не совсем понятно
Спасибо Вам msi2102, за то что откликнулись на моё обращение!!!
Итак, представим себе такое, что столбец ,,А,, это поисковая машина с уже
внесёнными в неё заранее числовыми комбинациями состоящими из
числового ряда с 8, 7 и шестью цифрами.
Смотрите более подробно в приложенном ПДФ ФАЙЛЕ!
 
Цитата
msi2102 написал:
другом листе покажите желаемый результат,
msi2102, нет смотри PDF!
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
Ігор Гончаренко написал:
а вам действительно нужно чтобы быстро работало?
Игорь, Спасибо что откликнулись!
Я ЗАНИМАЛСЯ в ручную поиском и удалением на листе Excel c 500.000 комбинациями. Скучно и долго вбивать комбинации столбца ,,А,, В ПОИСКОВУЮ строку страницы И ИСКАТЬ на листе совпадения, которые выделялись красным цветом.
Если было совпадение в комбинации из 6 чисел с 4 или 5 или 6 совпадениями то я эту строку удалял.
Около 5 часов провёл, чтобы удалить 1.600 совпадений с шестью числами. Прогресс конечно не быстрый, как на тракторе с Москвы на Камчатку.
Конечно мне нужен ,,Самолёт-истребитель,,, БЫСТРО-КАЧЕСТВЕННО-Без ЗАМОРОЧЕК и зависаний!
Спасибо за Вашу конкретность и скорость!
 
Цитата
Ігор Гончаренко написал:
(500000 х 8000 х 6 = минимум 24млрд. сравнений)
Программа должна работать по следующему алгоритму:
- Поиск первой строки столбца ,,А,, в строках столбца ,,С,, совпадений с 4 или 5 или 6 и затем удаление строк в ,,С,,
 А этих совпавших строк в ,,С,, окажется не мало.
Я занимался ручным поиском и взял комбинации(10 штук) из столбца ,,А,, и поисковик нашёл 1.600 комбинаций и их я удалил в ручную.
Программа не должна сравнивать, поиск из столбца ,,А,, в строках столбца ,,С,,идёт в порядке очерёдности.
Первая строка столбца ,,А,, нашла в столбце ,,С,, 200 совпадений и тут же удалила.
С каждым разом количество комбинаций в ,,С,,будет уменьшаться!
Благодарю!!!
 
если в ячейке из С есть комбинация в которой совпадают 5 или 6 чисел с чем-то из А такую ячейку то же нужно удалить?
или строго ячейки с 4-мя совпадениями?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Ігор Гончаренко написал:
А такую ячейку то же нужно удалить?или строго ячейки с 4-мя совпадениями?
Ячейку(или комбинацию) в ,,С,, с 4 или 5 или 6 совпадениями удалить!
Например:
Приложил файл
 
ясно как только нашлось 4 совпадения - удаляем, будет их там 5 или 6 (или больше) уже не важно
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Mershik написал:
msi2102 , нет смотри PDF!
:D  :D  :D

Вот вариант попробуйте, по скорости обработки не могу ничего сказать, попробуйте отпишитесь, в любом случае быстрее чем вручную.
Перед обработкой приведите данные в порядок. Между значениями один пробел, в начале и в конце пробелов нет (функция СЖПРОБЕЛЫ исправляет ситуацию на ура).
Результат выводится в столбец D. В столбец E выводится шаблон из столбца A. Это сделал для того чтобы Вы протестировали и проверили результат. Если будет все правильно то изменим столбец с результатом D на столбец C.
Изменено: msi2102 - 20.05.2021 12:25:26
 
Я чего-то не понял и тут эта тема и в платной ветке она же
 
MSI2102, Большущее Спасибо!
Вы не просто талант, Вы талантище! На лету всё ловите и тут же вот Вам и ,,Пирог готовый,,

Хороший сайт, хороший владелец сайта и помошники!
Спасибо!
Пока я тестирую, как разберусь где как и что напишу!
 
да, и от меня СПАСИБО!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Как я уже писал, в столбце ,,А,, вперемежку есть комбинации с 8, 7 и 6 числами. А в столбце ,,С,, только комбинации с 6 числами.
Я протестировал вперемежку в столбце ,,А,, ЗАВИСАЛА программа, пришлось закрыть принудительно.
Далее я стал раздельно тестировать столбец ,,А,,
Протестировал с 8 числами-зависло.Наверно идут не стыковки ,,А,, И ,,С,, из-за разности чисел в ,,А,,(8 ЧИСЕЛ) и ,,С,,(6 ЧИСЕЛ)
Протестировал с 7 числами(Смотри прикреплённые файлы) Наверно идут не стыковки ,,А,, И ,,С,, из-за разности чисел в ,,А,,(7 ЧИСЕЛ) и ,,С,,(6 ЧИСЕЛ)
Протестировал с 6 ЧИСЛАМИ полёт нормальный,  было в ,,А,, и ,,С,, по 850 комбинаций   Смотри прикреплённые файлы
Спасибо тебе Дорогой человек!!
 
Alex Neubauer, зачем создали дубль темы?
Не нужно писать весь текст жирным.
Две запятых - это не кавычки! Не затрудняйте чтение сообщений.
На форуме с незнакомыми принято общаться на "Вы"
Пример - это пример в файле Excel, а не картинки
Правила форума. Внимательно прочитайте, перечитайте и запомните.
 
Цитата
Alex Neubauer написал:
протестировал вперемежку в столбце ,,А,, ЗАВИСАЛА
Протестировал с 8 числами-зависло
Протестировал с 7 числами ... Наверно
у меня работает, но в той, другой теме
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Ігор Гончаренко написал:
да, и от меня СПАСИБО!
Игорь, приношу извинения, увидел поздно, что тема в платной ветке. К тому же Вы в платной ветке отписались, что будите уточнять данные, а уточняли эти данные в бесплатной. В платной ветке тема была второй или третий. На работе была небольшая запара и почему-то у меня сложилось впечатление (как сейчас понимаю неверное, нужно было время сообщений посмотреть, но ещё раз повторюсь загрузили на работе), что платная не актуальна. На мой вопрос "почему в двух ветках", тоже никто не ответил поэтому не стал удалять решение. Ещё раз прошу прощения.
Цитата
Alex Neubauer написал:
Протестировал с 8 числами-зависло.Наверно идут не стыковки ,,А,, И ,,С,, из-за разности чисел
Никаких нестыковок не может быть, шаблон хоть из 10 чисел. Проверьте это:
Цитата
msi2102 написал:
Перед обработкой приведите данные в порядок. Между значениями один пробел, в начале и в конце пробелов нет (функция СЖПРОБЕЛЫ исправляет ситуацию на ура).
Проверил у себя на 850 ячейках, заполненных рандомно. Шаблон состоит из 6, 7 и 8 чисел, всё работает, обработка около 3-4 секунд.
Изменено: msi2102 - 25.05.2021 15:36:24
 
Цитата
msi2102 написал:
Проверил у себя на 850 ячейках, заполненных рандомно
Добрый вечер, Добрый День!
Я прошу прощения за мой неуспех в этом деле Уважаемый msi2102!
Или у меня руки кривые или ещё что-то...!
Итак, проблема с семёрками!!
Посмотрите пожалуйста 2 примера и найдите, где и что я делаю не так!
Спасибо Вам большое!
 
Код
Sub SameDataRemove()
  Dim aa(), ca(), a, b, c&(), d, i&, j&, k&, n&, v&, cnt&, tm
  tm = Timer
  a = Range(Cells(3, 1), Cells(Rows.Count, 1).End(xlUp)): ReDim aa(1 To UBound(a))
  For i = 1 To UBound(a)
    b = Split(Replace(Trim(a(i, 1)), "  ", " ")): ReDim c(1 To 49)
    For j = 0 To UBound(b): c(Val(b(j))) = 1: Next
    aa(i) = c
  Next
  a = Range(Cells(3, 3), Cells(Rows.Count, 3).End(xlUp)): ReDim ca(1 To UBound(a))
  For i = 1 To UBound(a)
    b = Split(Replace(Trim(a(i, 1)), "  ", " ")): ReDim c(0 To UBound(b))
    For j = 0 To UBound(b): c(j) = Val(b(j)): Next
    ca(i) = c
  Next
  ReDim d(1 To UBound(a), 1 To 1)
  For i = 1 To UBound(ca)
    For j = 1 To UBound(aa)
      cnt = 0
      For k = 0 To UBound(ca(i))
        If aa(j)(ca(i)(k)) = 1 Then cnt = cnt + 1: If cnt = 4 Then Exit For
      Next
      If cnt = 4 Then Exit For
    Next
    If j > UBound(aa) Then n = n + 1: d(n, 1) = a(i, 1)
  Next
  Cells(3, 4).Resize(UBound(a), 1) = d: MsgBox "Время (сек.) = " & Timer - tm
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Ігор Гончаренко написал:
Программисты - это люди, решающие проблемы
Игорь, СПАСИБО Вам!!
Создал Макрос из кода, запустил Alt+F8!
Ввёл комбинации в А и С (5.130+5.130) ничего не произошло количество не уменьшилось.
Потом ввёл 5.130+150.000 также без изменений!
Спасибо за помощь!
 
в колонке д записывается то из с, что не нужно было удалять
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Игорь в колонке Е записывается и А для сравнения. Посмотрите на семизначнные числа в А и Е!
В Д приходят результаты не совпавших комбинаций, то есть их нет в А!
msi2102 Правильно построил макрос, план работы макроса, лучше чем у меня это созревало в моих идеях. Здесь я могу сравнивать, что было и что получил!
 
Цитата
Alex Neubauer написал:
Удаление из столбца ,,С,, строки с шестью цифрами при условии совпадения 4 цифры
сравнивайте) в С что было, в Д что осталось, после удаления из С всех строк с 4-мя или более совпадениями с колонкой А
и заодно можете сравнить скорость работы макроса
Изменено: Ігор Гончаренко - 26.05.2021 23:51:12
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Alex Neubauer написал:
Итак, проблема с семёрками!!Посмотрите пожалуйста 2 примера и найдите, где и что я делаю не так!
Я не понимаю в чем у Вас проблема.
В столбец D вставляется результат из столбца С если не найдено четырех совпадений, а если совпадения найдены то в столбец Е вставляется шаблон из столбца А, в котором есть эти совпадения. В данной выборке не найдены совпадения лишь один раз и результат находится в строке 539. Сделал специально так, чтобы Вы могли проверить результаты.
Добавил макрос, чтобы результат был как Вы просили в первом сообщении. Игорь сделал сразу так. У него скорость обработки примерно в 10 раз быстрее, но результат тот же, поэтому применяйте его макрос.  
Изменено: msi2102 - 27.05.2021 14:57:27
Страницы: 1
Наверх