Страницы: 1 2 3 След.
RSS
найти совпадение по нескольким значениям
 
Необходимо найти: приходил ли искомый товар на конкретный склад и цех в точное время, и если нет, то в ближайшее последующее время.


Заранее спасибо!
 
Цитата
kolyos83 написал:
в ближайшее последующее время.
это на сколько ближайшее?
По вопросам из тем форума, личку не читаю.
 
kolyos83,
Код
1: =ЕСЛИ(СЧЁТЕСЛИМН($B$5:$B$24;$I5;$C$5:$C$24;$J5;$D$5:$D$24;$K5;$E$5:$E$24;$L5)> 0;"Да";"Нет")
2: =ЕСЛИ(СЧЁТЕСЛИМН($B$5:$B$24;$I5;$C$5:$C$24;$J5;$D$5:$D$24;">"&$K5;$E$5:$E$24;$L5)> 0;"Да";"Нет")
In GoTo we trust
 
Цитата
БМВ написал: на сколько ближайшее?
имеется ввиду ближайшее не по списку, а ближайшее по времени после искомого
 
kolyos83, Вы в ближайшее время миллионером становится не планируете?  Впрочем если нет разницы когда, через день или 500 лет, то ответ уже дали выше, разве что >0 в условии лишнее, но и не мешающее.
Изменено: БМВ - 22.08.2018 21:48:38
По вопросам из тем форума, личку не читаю.
 
Спасибо большое!!
 
БМВ, хотел уточнить - а преобразование числового значение в булево как происходит? Т.е число 2 или 15 точно получится ИСТИНА? Решил для "надёжности" задать без конвертации)
In GoTo we trust
 
tolstak,  все что не 0 будет True , даже -100. Если честно, я сам по инерции часто сравниваю.
По вопросам из тем форума, личку не читаю.
 
БМВ, спасибо) А то в макросах пару раз попадал, когда CInt(True) = -1 :) Операция, конечно, обратная, но черт побери, я лучше уточню и в формуле :)
In GoTo we trust
 
tolstak, большое спасибо!!

однако работает не совсем как хотелось.
Когда проверяет ближайшее последующее время некоторые товары пропускает. Для уточнения: одновременно должны совпасть и склад, и цех, и товар, и ближайшее время.
Изменено: kolyos83 - 23.08.2018 12:03:49
 
kolyos83, сломал голову с Вашим временем, а точнее, с его округлением) В данных - время определено до миллисекунд, и получается, что ближайшее время визуально не отличается от текущего. А в расчетах это имеет значение...
В итоге сделал так - время округлил до условных секунд (плюс минус одна секунда), вычислил ближайшее от текущего время (с разницей >1 секунды), и искал значения в массиве данных по перемещению товара (с округлением), соответствующие ему.
Честно говоря, не уверен, что корректно посчитал, проверьте на бОльшем кол-ве данных....
In GoTo we trust
 
Цитата
tolstak написал:
CInt(True) = -1
есть такое. Шокирует когда не знаешь. :-)
По вопросам из тем форума, личку не читаю.
 
Подскажите, а что может быть не так? Часть товаров при проверке по ближайшему времени пропускает. Допустим искомые данные склад 100, цех 1, товар нож, время 01.01.2018 12:00:00. Дает результат: нет. А на самом деле при просмотре вручную есть такой товар на таком же складе и цеху в ближайшее время 01.01.2018 12:00:01. Т.е. должен быть результат "да".
 
Извиняюсь, не увидел ответа.
Сча, проверю по новой схеме.
 
В общем, тестировал целый день. Процент попадания улучшился, однако все же большая погрешность. В переделанной версии большое количество товара определяется как перемещенный в ближайшее время, т.е. результат "ДА", хотя при просмотре вручную он там отсутствует.  
 
kolyos83, не могли бы Вы
1) выложить тестовый файлик с бОльшим количеством данных;
2) точно описать что понимается под Ближайшим временем (расхождение в 1 миллисекунду \ 1 секунду \ минуту - это в ближайшее время или еще текущее?)
In GoTo we trust
 
Ну если с точным  вроде ка понятно, точно и есть точно то есть = без округления, то ближайшее просто
=IF(COUNTIFS($B$5:$B$25;$I5;$C$5:$C$25;$J5;$D$5:$D$25;">"&K5;$G$5:$G$25;$L5);"Да";"Нет")
И вроде это было
Изменено: БМВ - 23.08.2018 18:20:07
По вопросам из тем форума, личку не читаю.
 
Приблизительно вот так, товары представлены в виде цифровых кодов
 
Зачем столбец D?
Смотрите файл.
По вопросам из тем форума, личку не читаю.
 
БМВ, данную формулу изначально предлагалtolstak, я писал, что она не работала
Для подтверждения я умышленно вставил искомые значение в 360 и 367 строки, чтобы проверить. Результат "нет", а должен быть "да".

tolstak, предложил вариант с округлением, это оказалось эффективнее, однако все равно не точно, некоторые позиции пропускает (есть предыдущий пример).
 
=IF(COUNTIFS($A$5:$A$400;$H2;$B$5:$B$400;$I2;$C$5:$C$400;">"&TEXT($J2;"ДД.ММ.ГГГГ чч.мм.сс");$F$5:$F$400;$K2)> 0;"Да";"Нет")

при желании область всем столбцом можно
=IF(COUNTIFS($A:$A;$H2;$B:$B;$I2;$C:$C;$J2;$F:$F;$K2)> 0;"Да";"Нет")
=IF(COUNTIFS($A:$A;$H2;$B:$B;$I2;$C:$C;">"&TEXT($J2;"ДД.ММ.ГГГГ чч.мм.сс");$F:$F;$K2)> 0;"Да";"Нет")
По вопросам из тем форума, личку не читаю.
 
kolyos83, к сообщению #18:
Странно ведет себя СЧЕТЕСЛИМН(), почему-то неправильно считала по артикулу... Плюс, даты в массиве как-то иначе отформатированы, чем в запросе поиска - как текст что-ли...
Переписал через формулы массивов, вроде бы корректно отрабатывает.
In GoTo we trust
 
БМВ, все равно работает не корректно.

На этот раз я убрал искомые позиции. По одной из позиций результат "да", а должен быть "нет".
 
kolyos83, зачем пишете через 2-3 строки? Посмотрите #20 - неужели читабельность от этого становится лучше?
 
Цитата
БМВ написал:
это на сколько ближайшее?
то было в №2
ну 53 мин вы убрали но на 55 то осталось 372 строка.
555814.08.2018 18:55:4814.08.2018 18:55:480,000000000000000000000[/SIZE]147494
Соответвенно снова вопрос , на сколько ближайшее? Минута, две …….????
Изменено: БМВ - 02.09.2018 23:43:50
По вопросам из тем форума, личку не читаю.
 
в примере ближайшее время выделено желтым цветом.
Под ближайшим временем понимается время, ближайшее после искомого. Оно может занимать как одну строку (если товар один), так множество (если товаров много, как в примере).

Интересует только одно время, ближайшее после искомого.
В нашем случае необходимо проверить только время 18:53:34,  а 18:55:48 - уже не интересует.
Если бы под этим временем был бы один товар, то проверять надо было бы только одну позицию.
В нашем случае товаров в одно время несколько - поэтому и проверить надо все товары под временем 18:53:34.

Извиняюсь, может что не сразу, все пояснил. Надеюсь это прояснит картину.

Спасибо!!!
 
kolyos83, посмотрите, пожалуйста, сообщение #22, оно корректно отрабатывает?
In GoTo we trust
 
Время ближайшей, следующей или …. поставки , но не ближайшее время.
=IF(IFERROR(COUNTIFS($A:$A;$H2;$B:$B;$I2;$C:$C;INDEX($C:$C;MATCH($J2;$D:$D)+1);$F:$F;$K2);0);"Да";"Нет")

Столбец D хоть и без округления , но пригодился.
Изменено: БМВ - 24.08.2018 15:20:18
По вопросам из тем форума, личку не читаю.
 
Цитата
tolstak написал:
kolyos83 , посмотрите, пожалуйста, сообщение  #22 , оно корректно отрабатывает?
нет, не корректно, практически везде ставит ответ "нет"
 
Цитата
БМВ написал:=IF(IFERROR(COUNTIFS($A:$A;$H2;$B:$B;$I2;$C:$C;INDEX($D:$D;MATCH($J2;$D:$D)+1);$F:$F;$K2);0);"Да";"Нет")
Этот вариант также промахивает, ставит ответ "нет"
Страницы: 1 2 3 След.
Наверх