Нашёл здесь решение своего вопроса, но не могу разобрать, как именно работает формула
Код
=-ПРОСМОТР(;-ПСТР(A2;1;СТРОКА($1:$9)))
Я так понимаю, что запись
Код
=-ПСТР(A2;1;СТРОКА($1:$9))
превращает запись в ячейке в массив элементов, которые можно увидеть, если нажать F9. Но как тогда ПРОСМОТР вытаскивает оттуда макс значение? И при этом он работает только когда перед ПСТР есть знак "-". Получается, что в формуле =-ПРОСМОТР(;-ПСТР(A2;1;СТРОКА($1:$9))) ПРОСМОТР ищет пустое значение в указанном массиве элементов, и не найдя его, возвращает наименьшее (которое меньше искомого)в этом массиве (для этого знак "-" перед ПСТР), т.е. получается всю числовую часть ячейки. И затем знак "минус" перед самим ПРОСМОТРом схлопывается с минусом ПСТР, и получается искомый результат. Тогда понятен "-" перед ПСТР: поскольку ПРОСМОТР, когда не находит искомое (здесь - пустое ) значение, возвращает наименьшее в указанном массиве, нужно перед ПСТР добавить минус, т.к. без него наименьшего значения в массиве получается что нет, и формула =-ПРОСМОТР(;-ПСТР(A2;1;СТРОКА($1:$9))) выдаёт Н/Д. Т.е. пустое значение для Эксель - это то же самое, что и ноль.
Это так? мне кажется в моём рассуждении где-то кроются ошибки.
Здравствуйте, всех с прошедшими и наступающими!
Нашёл здесь решение своего вопроса, но не могу разобрать, как именно работает формула
Код
=-ПРОСМОТР(;-ПСТР(A2;1;СТРОКА($1:$9)))
Я так понимаю, что запись
Код
=-ПСТР(A2;1;СТРОКА($1:$9))
превращает запись в ячейке в массив элементов, которые можно увидеть, если нажать F9. Но как тогда ПРОСМОТР вытаскивает оттуда макс значение? И при этом он работает только когда перед ПСТР есть знак "-". Получается, что в формуле =-ПРОСМОТР(;-ПСТР(A2;1;СТРОКА($1:$9))) ПРОСМОТР ищет пустое значение в указанном массиве элементов, и не найдя его, возвращает наименьшее (которое меньше искомого)в этом массиве (для этого знак "-" перед ПСТР), т.е. получается всю числовую часть ячейки. И затем знак "минус" перед самим ПРОСМОТРом схлопывается с минусом ПСТР, и получается искомый результат. Тогда понятен "-" перед ПСТР: поскольку ПРОСМОТР, когда не находит искомое (здесь - пустое ) значение, возвращает наименьшее в указанном массиве, нужно перед ПСТР добавить минус, т.к. без него наименьшего значения в массиве получается что нет, и формула =-ПРОСМОТР(;-ПСТР(A2;1;СТРОКА($1:$9))) выдаёт Н/Д. Т.е. пустое значение для Эксель - это то же самое, что и ноль.
Это так? мне кажется в моём рассуждении где-то кроются ошибки.DExplorer
RAN, Андрей, она не 0 пропускает, а в случае неупорядоченных значений дойдет до последнего удовлетворяющего значению. ощем 0 среди отрицательных или ошибок из 9 последнее отрицательное меньше 0 , его и найдем, после инверсируем.
RAN, Андрей, она не 0 пропускает, а в случае неупорядоченных значений дойдет до последнего удовлетворяющего значению. ощем 0 среди отрицательных или ошибок из 9 последнее отрицательное меньше 0 , его и найдем, после инверсируем.bmv98rus
Замечательный Временно просто медведь , процентов на 20.
ну в данном случае используется If the LOOKUP function can't find the lookup_value, the function matches the largest value in lookup_vector that is less than or equal to lookup_value. правда не очень очевидно что используется как раз эта ошибка.
ну в данном случае используется If the LOOKUP function can't find the lookup_value, the function matches the largest value in lookup_vector that is less than or equal to lookup_value. правда не очень очевидно что используется как раз эта ошибка.bmv98rus
Замечательный Временно просто медведь , процентов на 20.
Если функции ПРОСМОТР не удается найти искомое_значение, то в просматриваемом_векторе выбирается наибольшее значение, которое меньше искомого_значения или равно ему.
Читал. Но 0 присутствует, и расположен раньше буквы 50J >> 50 И, как я понимаю, 0>-J
Во встроенной справке написано лучше.
Цитата
Если функции ПРОСМОТР не удается найти искомое_значение, то в просматриваемом_векторе выбирается наибольшее значение, которое меньше искомого_значения или равно ему.
Читал. Но 0 присутствует, и расположен раньше буквы 50J >> 50 И, как я понимаю, 0>-JRAN
Быть или не быть, вот в чем загвоздка!
Сообщение отредактировал RAN - Четверг, 02.01.2020, 22:50
даже если он есть, хотя его нет ибо массив будет {-8;-89;-898;-8989;-89890;-898909;-8989097;#VALUE!;#VALUE!}, то из-за отсутствия сортировки будет пропущен в пользу последнего без ошибки
даже если он есть, хотя его нет ибо массив будет {-8;-89;-898;-8989;-89890;-898909;-8989097;#VALUE!;#VALUE!}, то из-за отсутствия сортировки будет пропущен в пользу последнего без ошибкиbmv98rus
Замечательный Временно просто медведь , процентов на 20.
СПасибо, что не оставляете нас один на один с непоятными формулами, но... я так и не понял её логики.
=-ПСТР(A2;1;СТРОКА($1:$9)) - эта часть понятна, превращает строку в ячейке в набор элементов - {-3:-34:-341:-3416:-34165:-341651:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!}
Вопрос в том, как ПРОСМОТР вытаскивает наименьший элемент из этого массива? По справке, как указал Михаил, If the LOOKUP function can't find the lookup_value, the function matches the LARGEST value in lookup_vector that is less than or equal to lookup_value. Наше lookup_value = 0, и ПРОСМОТР (судя по справке) должен вроде как вытаскивать -3, а не -341651. Что за..? И вот эта часть ещё непонятна
Цитата
Андрей, она не 0 пропускает, а в случае неупорядоченных значений дойдет до последнего удовлетворяющего значению
Почему неупорядоченные значения? От большего к меньшему {-3:-34:-341:-3416:-34165:-341651:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!}
СПасибо, что не оставляете нас один на один с непоятными формулами, но... я так и не понял её логики.
=-ПСТР(A2;1;СТРОКА($1:$9)) - эта часть понятна, превращает строку в ячейке в набор элементов - {-3:-34:-341:-3416:-34165:-341651:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!}
Вопрос в том, как ПРОСМОТР вытаскивает наименьший элемент из этого массива? По справке, как указал Михаил, If the LOOKUP function can't find the lookup_value, the function matches the LARGEST value in lookup_vector that is less than or equal to lookup_value. Наше lookup_value = 0, и ПРОСМОТР (судя по справке) должен вроде как вытаскивать -3, а не -341651. Что за..? И вот эта часть ещё непонятна
Цитата
Андрей, она не 0 пропускает, а в случае неупорядоченных значений дойдет до последнего удовлетворяющего значению
Почему неупорядоченные значения? От большего к меньшему {-3:-34:-341:-3416:-34165:-341651:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!}DExplorer
Почему неупорядоченные значения? От большего к меньшему
по тому что есть еще одна строка Important: The values in lookup_vector must be placed in ascending order: ..., -2, -1, 0, 1, 2, ..., A-Z, FALSE, TRUE; otherwise, LOOKUP might not return the correct value И это говорит что обязательно от меньшего к большему.
Почему неупорядоченные значения? От большего к меньшему
по тому что есть еще одна строка Important: The values in lookup_vector must be placed in ascending order: ..., -2, -1, 0, 1, 2, ..., A-Z, FALSE, TRUE; otherwise, LOOKUP might not return the correct value И это говорит что обязательно от меньшего к большему.bmv98rus
Замечательный Временно просто медведь , процентов на 20.
bmv98rus, спасибо за наводку. Теперь вроде немного прояснилось.
Если значения в просматриваемом массиве - в нисходящем порядке, то ПРОСМОТР вытаскивает не наибольшее значение, а наоборот, наименьшее. Ха, но тогда создатели справки не совсем корректно сделали описание функции ПРОСМОТР -
Цитата
The values in lookup_vector must be placed in ascending order: ..., -2, -1, 0, 1, 2, ..., A-Z, FALSE, TRUE; otherwise, LOOKUP might not return the correct value.
правильнее наверно в таком случае будет так - "The values in lookup_vector must be placed in ascending order: ..., -2, -1, 0, 1, 2, ..., A-Z, FALSE, TRUE; otherwise, LOOKUP matches the SMALLEST value in lookup_vector.".
В этой формуле сознательно (!) допускается ошибка в синтаксе ПРОСМОТР, чтобы получить необходимый результат. Обожаю такую небанальную красоту.
bmv98rus, спасибо за наводку. Теперь вроде немного прояснилось.
Если значения в просматриваемом массиве - в нисходящем порядке, то ПРОСМОТР вытаскивает не наибольшее значение, а наоборот, наименьшее. Ха, но тогда создатели справки не совсем корректно сделали описание функции ПРОСМОТР -
Цитата
The values in lookup_vector must be placed in ascending order: ..., -2, -1, 0, 1, 2, ..., A-Z, FALSE, TRUE; otherwise, LOOKUP might not return the correct value.
правильнее наверно в таком случае будет так - "The values in lookup_vector must be placed in ascending order: ..., -2, -1, 0, 1, 2, ..., A-Z, FALSE, TRUE; otherwise, LOOKUP matches the SMALLEST value in lookup_vector.".
В этой формуле сознательно (!) допускается ошибка в синтаксе ПРОСМОТР, чтобы получить необходимый результат. Обожаю такую небанальную красоту.DExplorer
Сообщение отредактировал DExplorer - Вторник, 07.01.2020, 16:30