Проверьте, есть ли более высокие значения в 2 столбцах (C&D) на другом листе на основе значения ячейки в столбце B и результата автозаполнения - PullRequest
1 голос
/ 28 мая 2020

Ссылка на образец таблицы Google

В столбце E на листе «Cal c» я хочу проверить, есть ли на листе «Данные» человек, у которого такой же A значение, но более высокое значение на B и C. В конце концов, я хочу вернуть «Нет», если нет, вернуть «Да», если да. Если есть человек с таким же значением A, у которого более высокое значение на B, но не на C (или наоборот), верните «возможно» с именем человека (ов). Автоматическое заполнение E возвращенным значением.

Значения в столбцах B, C и D в «Cal c» являются динамическими c и будут изменяться в зависимости от других вычислений. Значения B, C и D в «Data» - это stati c. Длина обоих столбцов может быть разной.

Некоторые примеры:
Имя 1 на листе «Cal c» имеет значения A89, B70, C70.
Человек A на листе «Данные» имеет значения A89, B71, C75. Ни у кого другого нет значений A89 и выше как для B, так и для C.
Верните «Да».

Имя 1 на листе «Cal c» имеет значения A89, B70, C70 .
Человек A на листе «Данные» имеет значения A89, B60, C55. Ни у кого другого нет значений A89 и выше как для B, так и для C.
Возврат «Нет».

Имя 1 на листе «Cal c» имеет значения A89, B70, C70 .
Человек A на листе «Данные» имеет значения A89, B71, C55. Ни у кого больше нет значений A89 и выше как для B, так и для C.
Возврат «Может быть: Человек A».

Имя 1 на листе «Cal c» имеет значения A89, B70, C70.
Человек A на листе «Данные» имеет значения A89, B71, C55. Человек B на листе «Данные» имеет значения A89, B55, C71. Человек A имеет наивысшее значение для B по сравнению с людьми в листе «Данные» с A89, но на C ниже, чем у имени 1 в листе «Cal c». Человек B имеет наивысшее значение на C по сравнению с людьми в листе «Данные» с A89, но B ниже, чем имя 1 в листе «Cal c». Верните «Может быть: человек А, человек Б».

Я попытался начать с получения наивысших значений в листе «Cal c», объединив = ARRAYFORMULA с MAX, но я получаю либо ошибка массива 'другое число' или все просто сравнивается с B3.

Ошибка:

=ARRAYFORMULA(IF(ISBLANK($A3:$A);;$B3&":"&MAX((Data!$B3:$B=$B3)*Data!$C3:$C)&":"&MAX((Data!$B3:$B=$B3)*Data!$D3:$D)))

Рассчитано только с B3:

=ARRAYFORMULA(IF(ISBLANK($A3:$A);;$B3&":"&MAX((Data!$B3:$B=$B3)*Data!$C3:$C)&":"&MAX((Data!$B3:$B=$B3)*Data!$D3:$D)))

Изменить: I ' ve удалил открытые диапазоны, что, по крайней мере, устранило полученную мной ошибку, но по-прежнему не возвращает желаемых чисел (возвращает либо ноль, либо самые высокие числа, принадлежащие первой записи, B3). Я обновил лист соответствующим образом.

=ARRAYFORMULA(IF(ISBLANK($A3:$A999);;$B$3:$B$999&":"&MAX((Data!$B3:$B999=$B$3:$B$999)*Data!$C3:$C999)&":"&MAX((Data!$B3:$B999=$B$3:$B$999)*Data!$D3:$D999)))

Ответы [ 2 ]

2 голосов
/ 28 мая 2020

Ваша проблема в том, что ваши две вкладки имеют разный размер И у вас есть открытые диапазоны.
Ваша Calc вкладка составляет 1002 строки, а Data - 2001 строк.

У вас есть 2 альтернативы

Решение 1
Добавьте еще одну строку на вкладке Data или удалите одну из Calc таб.

Решение 2
Используйте закрытые диапазоны, как в

=ARRAYFORMULA(IF(ISBLANK($A3:$A888);;$B3:$B888&":"&MAX((Data!$B3:$B888=$B3:$B888)*Data!$C3:$C888)&":"&MAX((Data!$B3:$B888=$B3:$B888)*Data!$D3:$D888)))

В любом случае убедитесь, что в ваших диапазонах одинаковое количество строк .

0 голосов
/ 31 мая 2020

Я еще не нашел способ автоматически заполнить его, но это решение работает для меня, потому что я могу просто скопировать его во множество ячеек, объединив IF-оператор с формулой ISBLANK ().

В основном я использовал это, заключив в пару операторов if, изменил возвращаемые данные в соответствии с моими потребностями и построил код оттуда. Он возвращает желаемое значение ячейки от человека с наивысшим значением B и значение A, соответствующее значению на листе CAL C.

INDEX(          
    Data!$C:$C
    ;
    MATCH(
        MAXIFS(
            Data!$C$3:$C$100
            ;
            Data!$B$3:$B$100
            ;
            $B3
        )
        ;
        Data!$C:$C
        ;
        0
    )
)

Код в столбце M в образце -sheet - это код, который я начал использовать. Это некрасиво (совсем) и, вероятно, могло бы быть намного более эффективным, но это работает, и это уже потребовало много поисков в Google, попыток и терпения, так что я немного на пределе своих знаний о формулах Google, ха-ха.

Это формула, которую я реализовал в этом листе для условного форматирования, если кому-то понадобится что-то подобное. Он выбирает максимальное значение столбца на основе другого критерия:

=$E3=MAXIFS($E$3:$E$100;$M$3:$M$100;"Yes")
...