Формула Excel «ЕСЛИ»: рассчитать брокерские сборы

#excel #excel-formula #formula

#excel #excel-формула #формула

Вопрос:

Я новичок в Excel, и то, что я пытаюсь сделать, это мой простой расчет относительно брокерских сборов. Вот сборы, которые мне нужно заплатить:

 Stock value under MYR 1000 : Stamp duty MYR 1.
Stock value under MYR 2000 : Stamp duty MYR 2.
Stock value under MYR 3000 : Stamp duty MYR 3.
  

И это продолжается до тех пор, пока стоимость акций не превысит 200 000 миллионов рупий, а гербовый сбор не будет остановлен на уровне 200 миллионов рупий. Всякий раз, когда стоимость акций превышает 200 000 млн. рупий, гербовый сбор, который необходимо оплатить, по-прежнему составляет 200 млн. рупий.

Итак, в основном я составил свою формулу «ЕСЛИ», и кажется, что это займет целую вечность. Это формула, над которой я работал;

 =IF(L31>=37001,38,IF(L31>=36001,37,IF(L31>=35001,36,IF(L31>=34001,35,IF(L31>=33001,34,IF(L31>=32001,33,IF(L31>=31001,32,IF(L31>=30001,31,IF(L31>=29001,30,IF(L31>=28001,29,IF(L31>=27001,28,IF(L31>=26001,27,IF(L31>=25001,26,IF(L31>=24001,25,IF(L31>=23001,24,IF(L31>=22001,23,IF(L31>=21001,22,IF(L31>=20001,21,IF(L31>=19001,20,IF(L31>=18001,19,IF(L31>=17001,18,IF(L31>=16001,17,IF(L31>=15001,16,IF(L31>=14001,15,IF(L31>=13001,14,IF(L31>=12001,13,IF(L31>=11001,12,IF(L31>=100001,11,IF(L31>=9001,10,IF(L31>=8001,9,IF(L31>=7001,8,IF(L31>=6001,7,IF(L31>=5001,6,IF(L31>=4001,5,IF(L31>=3001,4,IF(L31>=2001,3,IF(L31>=1001,2,IF(L31>=1,1))))))))))))))))))))))))))))))))))))))
  

Итак, мой вопрос в том, есть ли какая-либо простая формула, которая соответствует правилам, написанным в первом абзаце?

Большое вам спасибо.

Комментарии:

1. Спасибо, Mech за ваш ответ. Ваш ответ действительно помог моей проблеме, но он не останавливается на MYR 200. Это становится все выше и выше.

Ответ №1:

Хотя VLOOKUP это классический способ устранения всех «ЕСЛИ», в данном конкретном случае также возможно решение по формуле из-за взаимосвязей:

 =MIN(INT((L31-1)/1000) 1,200)
  

кажется, дает те же результаты, что и ожидаемая ваша формула.

Комментарии:

1. @ed2 Отсюда мое первоначальное утверждение в моем ответе.

Ответ №2:

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

IF(LEN(L31)=5,LEFT(L31,2) 1 — Если длина составляет 5 символов, возьмите первые 2 символа и добавьте 1.

,IF(LEN(L31)=4,LEFT(L31,1) 1 — если длина равна 4 символам, возьмите первые символы и добавьте 1.

,1)) — если больше ничего не совпадает, значение равно 1.

 =IF(LEN(L31)=5,LEFT(L31,2) 1,IF(LEN(L31)=4,LEFT(L31,1) 1,1))
  

В отдельном примечании у вас была опечатка в вашей формуле (100001 должно было быть 10001).

Ответ №3:

Ваша вложенная формула IF может быть заменена такой же простой, как эта:

 =VLOOKUP($B$6,$A$2:$B$4,2)
  

Это классический вариант использования VLOOKUP без передачи параметра false.

Вы можете выполнить поиск по ВПР, чтобы увидеть, как это будет работать.

Это намного проще, чем пытаться вложить операторы IF.

Пример

Допустим, у вас есть следующая таблица с 2 столбцами, заголовками которой являются строки 1:

           COLUMN A         COLUMN B
          -----------      ----------------
Row 1:    Stock value      Stamp duty (MYR)
Row 2:              0                     1
Row 3:           1000                     2
Row 4:           2000                     3
  

Допустим, у вас есть стоимость акций в ячейке B6.

Ваша формула поиска (в какой-либо другой ячейке, скажем, B7) будет просто:

 =VLOOKUP($B$6,$A$2:$B$4,2)
  

Затем вы можете расширить эту таблицу до тех пор, пока в последней строке не будет 200 000 в столбце A. (Не забудьте убедиться, что формула также ссылается на новые строки).