2

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

Эта проблема:

Low        High        Amount to withdraw
600000     2000000     32000
300000     599999      20000
0          299999      8000

Таким образом, пользователь будет входить в текущее хранилище, скажем, 325000, и лист будет выплевывать 20000. Если пользователь отправит 153555, ответ будет выплевывать 8000

Как я уже сказал, используя всего 3 храповика, используя вложенные условия if невозможно, но может быть 10 храповых и вложенных, если предложения невозможны. Я хотел бы решить это с помощью формул Excel, а не макросов.

2 ответа2

2

Задайте информацию в скобках в следующей форме 1:

Low       Amount to withdraw
0         8000
300000    20000
600000    32000
2000000   #N/A

где-то в вашей рабочей тетради; скажем, E2:F5 (с заголовками в строке 1).  Тогда используйте функцию

=VLOOKUP(value, E$2:F$5, 2)

искать и извлекать второе (то есть, Сумма для изъятия) значение в последней строке таблицы, где значение E (нижний конец скобки) составляет ≤ значение поиска; например:

                       

Чуть более реалистичная формула будет

=IF(ISBLANK(A1), "", VLOOKUP(A1, E$2:F$5, 2))

который будет отображать пустой результат для пустого ввода (вместо того, чтобы рассматривать его как 0).


1 У нас нет верхних границ диапазонов в таблице, потому что нам это не нужно; 299999 и 599999 являются избыточными, когда у нас 300000 и 600000 .  Мы включаем 2000000 в качестве нижнего конца недокументированной скобки в диапазоне от 2000000 до .

0

Я хотел бы использовать индекс и соответствие функцию.
Предполагая, что вы можете сначала отсортировать таблицу по возрастанию. Или иначе =MATCH() не работает неправильно

=IF(F2<=INDEX(A:C,MATCH(F2,A:A,1),2),INDEX(A:C,MATCH(F2,A:A,1),3),"invalid")

Это также проверяет более высокое значение. Я настроил вашу таблицу в строке 3 для этого сценария. Теперь 400000 не соответствует допустимому диапазону и показывает недействительный

Разбить на маленькие формулы в отдельных ячейках (пользовательский ввод находится в ячейке F2)

[G9]  =MATCH(F2,A:A,1)             Find row in table
[G10] =INDEX(A:C,G9,2)             Find corresponding high value
[G11] =INDEX(A:C,G9,3)             Find corresponding amount to withdraw
[G12] =IF(F2<=G10,G11,"invalid")   Check if input is lower then upper boundary

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