Есть три поля: Дата получения, артикул и дата заявки. Артикул может повторяться. Необходимо проверить задвоения артикула и в случае повторяющихся значений, исключить все значения, кроме ого, у которого дата получения была ближе к дате заявки (как в ту, так и в другую сторону).
Можно ли такое сделать формулами? Или исключительно макросами? Я хочу попробовать сделать формулами, т.к. как сделать неформулами я знаю (используя надстройки).
Прошу помочь. Пример прилагаю.
Добрый день.
Есть три поля: Дата получения, артикул и дата заявки. Артикул может повторяться. Необходимо проверить задвоения артикула и в случае повторяющихся значений, исключить все значения, кроме ого, у которого дата получения была ближе к дате заявки (как в ту, так и в другую сторону).
Можно ли такое сделать формулами? Или исключительно макросами? Я хочу попробовать сделать формулами, т.к. как сделать неформулами я знаю (используя надстройки).
Здесь,я понимаю, что в столбце Артикул, мы с помощью Индекса ищем первый встречающийся уникальный номер, но как происходит поиск? И почему excel понимает, что второй раз не нужно этот номер отображать при воспроизведении результата. В частности, я не очень понимаю логику формулы отсюда:
. Вижу, что из всего столбца выбирается определенным образом значения, но как это происходит - не понимаю. Если не затруднит, поясните, пожалуйста. Я не гений в excel и многие операции делаю с помощью надстроек.
Здесь,я понимаю, что в столбце Артикул, мы с помощью Индекса ищем первый встречающийся уникальный номер, но как происходит поиск? И почему excel понимает, что второй раз не нужно этот номер отображать при воспроизведении результата. В частности, я не очень понимаю логику формулы отсюда:
. Вижу, что из всего столбца выбирается определенным образом значения, но как это происходит - не понимаю. Если не затруднит, поясните, пожалуйста. Я не гений в excel и многие операции делаю с помощью надстроек.
соот. получаем ИСТИНУ только там, где =СТРОКА(B$2:B$12)-1, т.е {1:ЛОЖЬ:3:4:5:6:7:8:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ}, с помощью НАИМЕНЬШИЙ извлекаем числа, в данном случае 1-я строка это 1, 2-я это 3 и т.д. так
Код
=ЕСЛИОШИБКА(ИНДЕКС(B$2:B$12;{1});"")
уже понятнее? столбец A: ищем позицию минимального числа в массиве, массив в данном случае
Код
ЕСЛИ(B22=B$2:B$12;ABS(A$2:A$12-C$2:C$12))
т.е. модуль разницы столбца A и C, при условии совпадения артикулов /так же все можно проверить с помощью F9 столбец C:
соот. получаем ИСТИНУ только там, где =СТРОКА(B$2:B$12)-1, т.е {1:ЛОЖЬ:3:4:5:6:7:8:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ}, с помощью НАИМЕНЬШИЙ извлекаем числа, в данном случае 1-я строка это 1, 2-я это 3 и т.д. так
Код
=ЕСЛИОШИБКА(ИНДЕКС(B$2:B$12;{1});"")
уже понятнее? столбец A: ищем позицию минимального числа в массиве, массив в данном случае
Код
ЕСЛИ(B22=B$2:B$12;ABS(A$2:A$12-C$2:C$12))
т.е. модуль разницы столбца A и C, при условии совпадения артикулов /так же все можно проверить с помощью F9 столбец C:
здесь идут по порядку значения, т.е. в первой ячейке значение 1, во второй - также значение 1 и т.д.. В последней ячейке значение 4 ячейки. Понятна логика.
Цитата
соот. получаем ИСТИНУ только там, где =СТРОКА(B$2:B$12)-1, т.е {1:ЛОЖЬ:3:4:5:6:7:8:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ}, с помощью НАИМЕНЬШИЙ извлекаем числа, в данном случае 1-я строка это 1, 2-я это 3 и т.д. так
здесь тоже понятнее стало: СТРОКА ищет сопоставления, т.е. находя повторение элемента выдает ложь.
Спасибо за пояснения.
Цитата
у вас в примере даты заявки по артикулу одинаковы.
а как быть, если даты не одинаковы?
Да, алгоритм понятнее стал:
Цитата
жмем F9, получаем{1:1:3:4:5:6:7:8:3:6:4}
здесь идут по порядку значения, т.е. в первой ячейке значение 1, во второй - также значение 1 и т.д.. В последней ячейке значение 4 ячейки. Понятна логика.
Цитата
соот. получаем ИСТИНУ только там, где =СТРОКА(B$2:B$12)-1, т.е {1:ЛОЖЬ:3:4:5:6:7:8:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ}, с помощью НАИМЕНЬШИЙ извлекаем числа, в данном случае 1-я строка это 1, 2-я это 3 и т.д. так
здесь тоже понятнее стало: СТРОКА ищет сопоставления, т.е. находя повторение элемента выдает ложь.
Спасибо за пояснения.
Цитата
у вас в примере даты заявки по артикулу одинаковы.
тогда не понятно что считать уникальными артикулами, если даты заявки разные, или какую из них брать. составьте пример с разными датами и соот. результат
тогда не понятно что считать уникальными артикулами, если даты заявки разные, или какую из них брать. составьте пример с разными датами и соот. результатNic70y
что считать уникальными артикулами, если даты заявки разные
Уникальный будет тот, у которого минимальная разница между датами, вне зависимости от того, какая дата раньше (т.е. дата получения может быть раньше даты заявки).
Получаем 15.05.2016 12345 18.05.2016, т.к. разница между датами 3 дня, что меньше разницы между датами в 7 дней в первом случае.
Пример приложил
Цитата
что считать уникальными артикулами, если даты заявки разные
Уникальный будет тот, у которого минимальная разница между датами, вне зависимости от того, какая дата раньше (т.е. дата получения может быть раньше даты заявки).