У меня есть таблица с тремя типами клиентов: GOV, NProfit и COM, содержащиеся в столбце B. Каждый из них получает разные тарифы выставления счетов, 1,50, 2 и 3 соответственно, которые должны применяться к единицам, выставленным в столбце G.

Мне нужно написать функцию в столбце H, которая читает тип клиента в столбце B и применяет соответствующую ставку для типа клиента к единицам, выставленным в столбце G, давая мне общий счет в столбце H.

2 ответа2

4

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

Для простоты обслуживания я настоятельно рекомендую создать отдельную таблицу с тремя типами клиентов и соответствующими тарифами. Подойдет простая таблица с двумя столбцами. Столбец A - это тип клиента, а столбец B - тарифный план.

Затем вы можете использовать VLookup, чтобы получить тарифную ставку для типа клиента.

Преимущество этого подхода состоит в том, что если меняется тарифная ставка, вам не придется менять все ячейки с вложенными инструкциями IF, как предложено выше. Вы просто меняете тарифную ставку в справочной таблице.

Поместите таблицу поиска в новый лист с именем "Поиск". Ряд 1 - метки. A1 - тип клиента, B1 - тариф.

На вашем оригинальном листе данных вы можете использовать Vlookup, как это

=VLOOKUP(A1,Lookup!$A$1:$B$4,2,FALSE)

Этот поиск предполагает, что тип клиента находится в ячейке A1 на текущем листе. Пожалуйста, приспособьтесь к вашему сценарию. Кроме того, вы можете вложить Vlookup в другой расчет. Например, если вы хотите сделать расчет, который включает в себя тарифную ставку, вы можете сделать что-то вроде

=B1*VLOOKUP(A1,Lookup!$A$1:$B$4,2,FALSE)

где A1 текущего листа - это тип клиента, а B1 текущего листа - это значение, которое вы хотите умножить на тарифную ставку соответствующего типа клиента.

Если ваши данные не всегда имеют тип клиента, вы можете захотеть использовать некоторые сообщения об ошибках для данных без типа клиента. Обычно формула возвращает сообщение об ошибке. Если вы заключите формулу в оператор IFError(), вы можете пометить их, например:

=IFERROR(B1*VLOOKUP(A1,Lookup!$A$1:$B$4,2,FALSE),"Please check data!")
1

Вы имеете в виду что-то подобное?

= IF(B1 = 1, "customer1", IF(B1 = 2, "customer2", IF(B1 = 3, "customer3", "неверный параметр")))

Замените 1, 2, 3 фактическим значением, которое вы "тестируете", а "customer1", "customer2", "customer3" тем, что вы хотите, чтобы результат был

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .