Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Перенос не повторяющихся значений.
 
Добрый день, подскажите как можно реализвоать.

Есть два документа:
В документе 1 записанны значения в столбце в формате: "Текст - число". Например: "номер - 107"
В документе 2 такой же столбец с такими же значениями.
Нужно перенести не повторяющиеся строки из документа 2, в документ 1.
В документе 1 значений около 2-ух тысяч. В документе 2 их окоол 50, постоянно разные появляются(актуализируются).
Подскажите как реализовать перенос, то есть как найти эти строки которых еще нет в документе 1.
Прошу лишь концепцию, думал вытягивать цифры регулярками, потом по ним сравнивать. Но так все равно вложеные циклы делать и т.п. (опыта у меня мало в VBA)

P.S. Файлы к сожалению приложить не могу.
 
Argo9,

файл-пример это не ваш рабочий файл, а файл максимально похожий на ваш и желаемым результатом, но секретная информация может быть заменена - овцы на яблоки, деньги на орехи....
Вариант макросом: циклом проверять каждый из 50 значений в 2 тыс и в случае отсутствия копировать его :

P.S. решение к сожалению показать не могу...
Изменено: Mershik - 14 фев 2020 10:39:05
 
1. В документе 2 в соседний столбец записать формулу =ЕНД(ПОИСКПОЗ())
2. Отфильтровать по этому столбцу те, которые ИСТИНА.
3. Скопировать, перейти в Документ 1 и добавить их снизу.
4. Желательно, чтобы Документ 1 был "Умная таблица".

P.S. решение, к сожалению, показать не могу...
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
Ваша ирония не уместна, я не просил решения. Файл не могу выложить физически, политика безопастности не позволяет выгружать файлы. Спасибо за помощь, но думал есть изящнее варианты.

Просто там нумерация идет по порядку и я думал ограничить диапазон поиска последними записями.
Условно: в документе последняя запись: "номер - 300" и просто перенести все с значением больше 300.
Изменено: Argo9 - 14 фев 2020 11:04:55
 
Доброе время суток
Цитата
Argo9 написал:
Прошу лишь концепцию
Делаете self-reference таблицу на Power Query или SQL в документе 1. Запросом Power Query или SQL делаете выборку в документе 2 тех данных, которых нет в документе 1 и сливаете запросом назад в документ 1.
Так как-то, если говорить об одной из концепций.
 
Цитата
Андрей VG написал:
Делаете self-reference таблицу на Power Query или SQL в документе 1. Запросом Power Query или SQL делаете выборку в документе 2 тех данных, которых нет в документе 1 и сливаете запросом назад в документ 1. Так как-то, если говорить об одной из концепций.

Спасибо, я думал о PQ, просто были задачи которые я решал с этим документом макросом, и думал засунуть все в VBA. Но одно другому не мешает, так что буду пробовать .
 
Цитата
Argo9 написал:
Подскажите как реализовать перенос, то есть как найти эти строки которых еще нет в документе 1.
Добавить строки документа 1 в массив (коллекцию, словарь), затем сравнить строки документа 2 с массивом, если такой строки нет в массиве, значит переносить ее в документ 1.
 
Андрей_26, не поскажите синтаксис проверки нахождения записи массива на наличие в другом массиве?
 
Цитата
Argo9 написал:
синтаксис проверки нахождения записи массива на наличие в другом массиве
Вы до сих пор не умеете делать циклы?
Код
arr1 = диапазон1.Value
arr2 = диапазон2.Value
for lr = 1 to ubound(arr1,1)
  x = arr1(lr,1)'это будем искать в другом массиве
  ff = false'флаг, если найдем значение
    for lrr = 1 to ubound(arr2,1)
       if x = arr2(lrr,1) then
         'нашли!
         ff = true
         exit for
       end if
    next
    if ff then
      debug.print "значение '" & x & "' найдено во втором массиве"
    end if
next
а еще проще и быстрее это делать через словари, но че-то лень уже писать. На сайте таких примеров куча. Можно поискать по словам scripting.dictionary
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков, к счастью умею, но думал есть методы по аналогу с instr для строк. Или как в языке Python(там можно в одну строку это узнать). За совет со словарем спасибо, разведаю. Спасибо.
 
Если вдруг Мак и словарей нет - можно использовать коллекцию с ключом. Если добавилось - значит ранее не было в коллекции, если ошибка - значит было.
Но с словарём (в Windows) проще -
Код
if словарь.exists(значение) then
Изменено: Hugo - 14 фев 2020 16:15:22
Страницы: 1
Читают тему (гостей: 1)
Наверх