Страницы: 1
RSS
Найти дубликат и определить первую дату вхождения в список
 

День добрый!

Помогите пожалуйста! Всю голову сломал уже

Нужно найти дубликат в столбце Контрагент. Далее нужно найти первое вхождение дубликата по дате и в столбце "Категория" присвоить значение «Новый» Соответственно, второе и последующие вхождения этого контрагента обозначаются как Старый.

Если ранее в списке не было такого значения в столбце «Контрагент», то в ст. "Категория" присваивается значение «Новый». соответственно, последующие вхождения - статус "Старый"

Если контрагент в одну дату засветился 2 раза, то первому вхождению присваивается Категория - "Новый", а второму - "Старый"

Строк пустых не будет

Дата будет именно как представлено в примере

Очень желательно без VBA и без формулы массива

 
И Вам добрый. Так?
=ЕСЛИ(СЧЁТЕСЛИ(G$4:G4;G4)=1;"Новый";"Старый")
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
Было бы так легко! Ваш вариант не сработал. Формула ищет первое вхождение в списке, а надо первое вхождение по дате.

и да, списки не отсортированы ни по дате, ни по контрагенту
 
Цитата
Алекс Пол написал:
Было бы так легко
ну судя по описанию - так и есть. Вы тогда поясните все условия и почему на Вашем скрине по-Вашему не правильно? Ведь контрагент повторяется? А у Вас написано:
Цитата
Алекс Пол написал:
Если ранее в списке не было такого значения в столбце «Контрагент», то в ст. "Категория" присваивается значение «Новый». соответственно, последующие вхождения - статус "Старый"
а вот это уже масло масляное после первого условия:
Цитата
Алекс Пол написал:
Если контрагент в одну дату засветился 2 раза, то первому вхождению присваивается Категория - "Новый", а второму - "Старый"
или какая-то недоговорка в части условий отбора.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Во втором предложении  в стартпосте у меня написано:  Далее нужно найти первое вхождение дубликата по дате и в столбце "Категория" присвоить значение «Новый»

прошу не сердиться. задачка реально нетривиальная.
вот что я сваял. и не пойму, где она не работает:
Код
=ЕСЛИ(G11="";""; ЕСЛИ(ЕСЛИОШИБКА(ПОИСКПОЗ(G11;ЕСЛИ(ТЕКСТ($D$4:$D$105;"mmmm yy")=ТЕКСТ(D11;"mmmm yy");"";$G$4:$G$105);0);"")="";"Нов";"Стар"))

Формат даты выгружаю именно такой. со временем.
 
Цитата
Алекс Пол написал:
Далее нужно найти первое вхождение дубликата по дате и в столбце "Категория" присвоить значение «Новый»
вот это вот расшифруйте как минимум. Потому что сейчас у Вас условия противоречат друг другу и понятны только Вам. Без обид. Никто не сердится, но постарайтесь расписать более подробно условия. Что значит дубликат по дате? Это где и дата одна и контрагент? А как же условие "Если контрагент в одну дату засветился 2 раза"? А что тогда делать с теми контрагентами, которые в несколько разных дат встречаются? В общем непонятно как-то все.
Та же Лилия Кондакова - она должна быть всегда "Новый"? Ведь все даты разные. Или как должно происходить?
Может это надо?
Код
=ЕСЛИ(СУММПРОИЗВ((G4=$G$4:G4)*(ЦЕЛОЕ(D4)=ЦЕЛОЕ($D$4:$D4)))=1;"Новый";"Старый")
Если кратко, то: если и контрагент и эта дата встречаются впервые - это новый. В противном случае - старый.
Изменено: Дмитрий(The_Prist) Щербаков - 11.01.2021 17:03:14
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Список не сортированный. Не хотелось бы выполнять лишнее движение по сортировке.

Пример на скрине: Лилия появилась в списке 16 декабря.
Формула проверяет: Есть ли в списке Лилия. Если нет, то статус - Новый. И этот статус не должен меняться, потому что это первое вхождение в список
Далее, Лилия пришла 28 декабря.
Формула проверяет, была ли Лилия в списке ранее этой даты. Если есть - то присваивает статус Старый. Но запись Новый не должна поменяться. Таким образом, я знаю дату, когда Лилия вообще появилась
 
Алекс Пол, Вам не кажется, что задача решится проще, если даты отсортировать от старых к новым?
Попытка №2. Формула массива:
=ЕСЛИ(СТРОКА()=МИН(ЕСЛИ(МИН(ЕСЛИ(G$4:G$105=G4;D$4:D$105*1))=ЕСЛИ(G$4:G$105=G4;D$4:D$105*1);СТРОКА(G$4:G$105)));"Новый";"Старый")
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
Цитата
Алекс Пол написал:
Лилия появилась в списке 16 декабря
а как тогда быть, если она второй раз появилась тоже 16-го, но время раньше? :) Это уже так, к слову: зачем отсекать время?
Получилось вроде такой формулой:
Код
=ЕСЛИ(СУММПРОИЗВ((G4=$G$4:G4)*(--D4=МИН(ЕСЛИ(G4=$G$4:G105;--$D$4:$D105))))=0;"Старый";"Новый")
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Максим В.,Благодарю! работает. Но очень хотелось бы без массива
Изменено: Алекс Пол - 11.01.2021 17:28:25
 
Дмитрий(The_Prist) Щербаков, В Вашем случае она ищет первое вхождение сверху. Тоже вариант. Спасибо!

Два дня голову ломал!
 
Цитата
Алекс Пол написал:
очень хотелось бы без массива
Сортируйте даты от старых к новым. В столбце H формула
Код
=ЕСЛИ(СЧЁТЕСЛИ(G$4:G4;G4)=1;"Новый";"Старый")

Как видите результаты совпадают.

Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
Формула
Код
=IF(AGGREGATE(15;6;ROW($1:$1000)/(AGGREGATE(15;6;D$4:D$1000/(G$4:G$1000=G4);1)=D$4:D$1000)/(G4=G$4:G$1000);1)=ROWS($4:4);"Новый";"Старый")
 
Цитата
Алекс Пол написал:
В Вашем случае она ищет первое вхождение сверху
а вот нет. Проверьте. Та же Лилия - если отфильтровать, то "Новая" будет только один и явно не первый по порядку :) Плюс, можно чуть диапазон подправить, теперь уже делать его "плавающим" нет надобности:
Код
=ЕСЛИ(СУММПРОИЗВ((G4=$G$4:$G$105)*(--D4=МИН(ЕСЛИ(G4=$G$4:$G$105;--$D$4:$D$105))))=0;"Старый";"Новый")
Изменено: Дмитрий(The_Prist) Щербаков - 11.01.2021 18:31:59
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Задачка трансформировалась чуток: клиент появился первый раз 1 декабря - назначает -Новый, второй раз клиент пришел 2 декабря - назначает Старый (коллеги правильно написали.
Но возникает проблема, при подсчете клиентов пишет: Декабрь, количество новых 1, количество старых 1. Хотя это тот же Иванов пришел 2 раза.

Мне хотелось бы чтобы первое и повторное вхождение в одном месяце считалось как новый

Поможете?  
Страницы: 1
Наверх