Например есть массив (A1:C10), в нем содержатся некие числовые данные. Надо найти в нем максимальное значение (MAX), которое бы условию: ПАРАМЕТР1<=MAX<=ПАРАМЕТР2. Результатом должно быть а) само это значение, б) ссылка на ячейку, в котором находится это значение. NB: Заметьте, что функция ДМАКС для поиска значения не подходит. И не подходит она по двум причинам: 1) она не ищет в массиве, а ищет толко в БД, где однородные данные должны находиться строго в строках ИЛИ столбцах, но не и там, и там одновременно; 2) для задания условия в функции ДМАКС в качестве аргумента нужна ссылка на диапазон ячеек, содержащий эти условия, а мне нужно, чтоб эти условия (а не ссылки на них) были непосредственым аргументом функции. Для понимания задачи опишу где это используется. Это используется при подборе значения методом перебора с последующим удалением это значения из списка. Например надо уложить паркетную доску. При ее укладке образовываются обрезки в начале и конце комнаты. Эти обрезки можно (и нужно) использовать. Потому и стоит задача поиска минимального по размеру обрезка в массиве обрезков, но который больше заданой величины (т.е. величины места под него). А для того, чтоб после использования искомого обрезка исключить его из массива обрезков - нужен адрес ячекйки, где он хранился. Я голову сломал не нашел решение... А вам слабо? :)
Barmaldon, чувство юмора и смайлик тут ни причём: можно послать подальше и поставить смайлик с улыбкой - будет смешно? Просто здесь не любят, когда пытаются брать "на слабо".
Barmaldon пишет:Получается булевое значение умножаем на булевое... А так можно?
можно. только они при этом автоматически преобразуются в числа. и результат получается - число. а для функции ЕСЛИ это число обратно преобразовывается в буль. тоже автоматически.
фрилансер Excel, VBA - контакты в профиле "Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
ikki пишет: только они при этом автоматически преобразуются в числа.
Спасибо большое. Теперь все понял. Тема раскрыта, а раз раскрыта, то закрыта. Спасибо большое всем за участие, а главное спасибо - ikki за раскрытие темы.
ikki пишет: если максимум окажется не один, то формулы для адреса могут наврать.
Я об этом подумал когда впервые смотрел вашу таблицу, и даже стал писать соответствующий месседж, но потом подумал, что для моей задачи не имеет значения какой именно максимум имел ввиду эксель когда его находил, и какой о покажет в адресе. Ведь главное, что он верно нашел максимум и верно дал ссылку на расположение максимума. Имхо тема раскрыта. Но раз уж заговорили... Подскажите пожалуйста, чем заменяется функция ИЛИ в формулах массива?
Да, точно, теперь понял... Эксель взял строку от одной ячейки, а столбец - от другой. Очень странно, значит у него неодинаковый алгоритм поиска от раза к разу, раз он просматривает массив в разных направлениях... Очень странно...
причем тут "просматривает массив в разных направлениях"? "просматривает" он его одинаково, и неважно, как именно. просто в результате вложенной функции ЕСЛИ(A1:C10=E10;СТРОКА(A1:C10)) получается массив а нам нужно одно значение поэтому мы применяем к этому массиву МИН а функции МИН, примененные по отдельности к номерам строк и к номерам столбцов - это в данном случае логическая ошибка.
фрилансер Excel, VBA - контакты в профиле "Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
ikki пишет: в результате вложенной функции ЕСЛИ(A1:C10=E10;СТРОКА(A1:C10)) получается массив
Правильно, но и в результате вложенной функции ЕСЛИ(A1:C10=E10;СТОЛБЕЦ(A1:C10)) получается тоже массив. Только в первом случае ex берет значение из одной ячейки массива (когда находит совпадение ячейки массива с E10) и дальше уже массив не просматривает, а в другом случае из другой. Вот я и имел ввиду, что он просматривает массив в этих двух случаях поразному - в первом случае он "натыкается" сначала на значение "15" в ячейке B4, и соответственно выдает строку 4, а во втором случае он почему-то сначала находит значение "15" уже в ячейке A7 и выдает столбец 1. Странно то, что он просматривает массив по-разному в этих двух случаях.
Barmaldon пишет: просматривает массив в этих двух случаях поразному
ещё раз рассказать?
просматривает одинаково. в первом случае получается массив, в котором два номера строк с максимумом: 4 и 7, остальные значения - ЛОЖЬ во втором - массив, в котором два номера столбцов с максимумом: 2 и 1, остальные значения - ЛОЖЬ эти массивы абсолютно параллельны между собой. но фишка в том, что функции МИН для номера строки берет 4, а для номера столбца - 1. т.е. от разных ячеек. (в принципе - она ж об этом и не "знает", она просто работает с массивом чисел) а на пересечении этих строки и столбца находится вовсе не максимум.
Замена функции И( ), которая, как вам уже сказали, в формулах массивов не работает
Ради справедливости Не обижайте функцию, работает в формулах массивов и она, и подруга ИЛИ. Но в другом случае: =И(здесь_может_быть_обработка_массива).
ikki пишет: функции МИН для номера строки берет 4, а для номера столбца - 1.
А зачем вообще здесь используется функция МИН ? С таким же успехом могла быть функция МАКС ? Это потому, что функция ЕСЛИ не работает напрямую с массивами?
Предположим, если бы нам было достаточно знать только номер строки (столбец нам предположим не нужен) можно было бы и так например:=МАКС(ЕСЛИ(A1:C10=E10;СТРОКА(A1:C10))). То есть вопрос в чем: зачем в этом случае функция МИН (или МАКС) - чтоб выбрать по сути любое значение из массива - правильно?
не любое. а то, которое нужно - минимальное или максимальное. но одно. если бы была абсолютная уверенность, что значение всегда одно - можно и СУММ использовать.
фрилансер Excel, VBA - контакты в профиле "Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
В последнем примере (когда не нужно пересечение множеств, а достаточно выбрать любое значение из одного множества, удовлетворяющее условию), при определении номер строки все же мне кажется можно использовать и мин, и макс - результат будет в первом случае строка 4, во втором - строка 7, но сути это не меняет - и первый и второй вариант даст верный результат - номер строки, содержащей ячейку со значением, удовлетворяющим условию. (повторюсь: это только в том случае, если знание номера столбца нам не нужно).