Excel - превосходный продукт для многоуровневой модели ценообразования - PullRequest
0 голосов
/ 25 февраля 2020

У меня есть данные ниже, начиная с A1:

start tier  end tier    price
1           5           5
6           7           4
8           10          3
11          111         2
112                     1

Использование в D1 и равно 10. Я хочу вычислить значение на основе использования и снижающейся цены. У меня есть два продукта, но мне не повезло.

Первый:

=SUMPRODUCT(--($D$1>A2:A6), ($D$1-B2:B6), C2:C6) 

Второй:

=SUMPRODUCT(--($D$1>{0,6,8,11,112}),--($D$1-{5,7,10,111,1000}),{5,-1,-1,-1,-1})

Оба просчитаны.

I предпочитаю первый, так как нет жесткого кодирования.

Ответы [ 3 ]

1 голос
/ 25 февраля 2020

Мне кажется, что вы допустили ошибку в комментарии к решению @ paul, и результат должен быть 42 - если использование 10, то оно делится на 5 * 5, 2 * 4 и 3 * 3.

Если я прав, вы можете попробовать следующую формулу:

=SUMPRODUCT(($D$1>=A2:A6)*((B2:B6-A2:A6)+1+($D$1-B2:B6<0)*($D$1-B2:B6))*C2:C6)

enter image description here

0 голосов
/ 25 февраля 2020

Используйте SUMPRODUCT и LOOKUP:

=SUMPRODUCT(LOOKUP(ROW($ZZ$1:INDEX($ZZ:$ZZ,D1)),{1,6,8,11,112},{5,4,3,2,1}))

enter image description here


С таблицей поиска:

=SUMPRODUCT(LOOKUP(ROW($ZZ$1:INDEX($ZZ:$ZZ,D1)),A:A,C:C))

enter image description here

0 голосов
/ 25 февраля 2020

Вы уверены, что хотите использовать SUMPRODUCT для этого? RANGELOOKUP может быть более подходящим.

Учитывая данные:

End Tier     Price
       0         5
       5         4
       7         3
      10         2
     111         1

Вы можете найти цену для количества (например, 18 единиц), используя =VLOOKUP(18,A2:B6,2,TRUE)

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