Я бы следовал одному из двух подходов. 1) макро /vba программирование 2) VLookups и добавить некоторые дополнительные данные на свой лист.
Макрос будет:
1) Прокрутите строки в столбце «Конец плиты», чтобы найти номер «плиты», в который помещается число пользователей, определив местонахождение пункта «Начало плиты»> «Число пользователей».
В вашем примере это будет плита 21 - 200.
2) Определите сумму для «шагов плиты» (если это имеет смысл) путем умножения ширины плиты на каждую плиту ниже, чем плиты, найденной на шаге 1) и сложения результатов
В вашем примере это будет (10 * 0,80) + (10 * 1,00)
3) Вычтите ширину из числа пользователей, чтобы найти число, оставленное для плиты, найденной на шаге 1).
В вашем примере это будет 60 - 20 = 40 * 0,5.
Тем не менее, я думаю, что добавление некоторых дополнительных данных на ваш лист и использование VLookup будет работать без использования макросов. Я бы добавил столбцы 'CountLessThanSlab' и 'CostOfCount' к каждой строке, в результате чего получился бы лист, который выглядит следующим образом:
Start End Width CountLessThan CostLessThan SlabUnit
1 10 10 1.00
11 20 10 10 10.00 0.80
21 200 180 20 18.00 0.50
201 500 300 200 108.00 0.30
Тогда ваша формула будет принимать количество пользователей (60), использовать VLookup, чтобы найти правильную строку (21, 200, 180, ...), вычитать CountLessThan (20) из числа пользователей, чтобы получить 40, и прибавлять сумму эта цифра умножается на стоимость единицы перекрытия для AmountLessThan в той же строке. Примерно так должно это сделать:
=vlookup(B1, $B$3:$E$7, 4, true) + ((B1 - vlookup(B1, $B$3:$E$7, 3, true)) * vlookup(B1, $B$3:$E$7, 5, true))
Предостережение: у меня нет превосходства передо мной, атм.
Редактировать: я дронго
Концепция верна, но формула неверна. (Я неправильно помнил, что искомое значение меньше соответствующего значения в таблице, но все наоборот.)
Эта формула работает, используя настройку таблицы, о которой я упоминал выше:
=VLOOKUP(B1, $A$3:$F$7, 5, TRUE) + ((B1 - VLOOKUP(B1, $A$3:$F$7, 4, TRUE)) * VLOOKUP(B1, $A$3:$F$7, 6, TRUE))