Dynami c значение поиска, если входное значение находится между двумя заданными значениями - PullRequest
0 голосов
/ 25 апреля 2020

Таблица содержит список чисел и список начальных значений, когда числа действительны. В отдельной таблице есть список входов, для которых необходимо рассчитать выход.

Правила расчета:

  • Если входное значение больше или равно нижнему из двух последовательных начальных значений и меньше чем старшее из тех же двух начальных значений, число, соответствующее нижнему начальному значению, является действительным.
  • Если входное значение меньше первого начального значения, выходное значение равно 0.
  • Если входное значение больше или равно наибольшему начальному значению, выходным значением является число, соответствующее наибольшему начальному значению.
  • Значения в полях Number и Start являются динамическими c. Другими словами, значения не могут быть жестко заданы.
  • Начальные значения всегда будут в порядке возрастания.

Например:

Example Tables

Следующая формула работает, но я пытаюсь улучшить свои навыки работы с Excel, рассматривая варианты, которые сокращают общее количество символов. Я полагаю, это немного похоже на ситуацию с Code Golf.

=IF(D2<B$2, 0,
   IF(D2<=B$3, A$2,
     IF(D2<=B$4, A$3,
       IF(D2<=B$5, A$4,
         IF(D2<=B$6, A$5, A$6)
       )
     )
   )
 )

Мое текущее решение плохо масштабируется из-за природы встроенных операторов if. Цель состоит в том, чтобы уменьшить количество символов, необходимых для вычисления правильных выходных значений, не заботясь о читабельности. Можно создавать эталонные ячейки, если это необходимо, но я пытался этого избежать.

Это погружение в алгоритмы мельчайших деталей больше, чем что-либо еще. Любые советы будут с благодарностью.

1 Ответ

0 голосов
/ 26 апреля 2020

Я нашел более краткий и читаемый ответ после значительных проб и ошибок. К сожалению, мне пришлось добавить еще одно поле (Stop), но полученная формула гораздо более читабельна и идиоматична c. См. Ниже.

enter image description here

Это формула в F2: =SUM(J4>=C$11:C$15*(J4<E$11:E$15)*F$11:F$15)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...