Комплексное округление с нестандартными интервалами в Excel - PullRequest
1 голос
/ 15 августа 2011

Мне нужно округлить вычисленное число до ближайшего значения в таблице.Значения в таблице не являются последовательными, и интервалы между значениями не совпадают.(На самом деле я не смог найти шаблон между значениями.)

Вот таблицы значений:

1
10
20
40
70
120
180
260
360
610
940
1350
1780
2220
2720
3490
4770
6500
8070
10000

Так, например, если у меня есть вычисленное число 53.36, формула должна возвращать табличное значение 40.Если бы значение было выше 55, оно вернуло бы 70.

Ответы [ 3 ]

2 голосов
/ 15 августа 2011

Используйте vlookup с конечным параметром 1 или true (не точное совпадение).

Поместите ваши значения в диапазон и посмотрите на этот диапазон. Он найдет ближайшее значение, которое не превышает искомое значение.

Edit: И ... кстати, ваши числа в списке являются числами WARF (средневзвешенного рейтинга), которые Moody's использует в рейтинговых облигациях. Смотри здесь .

Редактировать # 2: Чтобы получить "округление", которое вы ищете, просто поместите второй столбец в вашем диапазоне поиска, который имеет следующий номер вверх. Например: в строке, где 20, второй столбец будет показывать 40; в строке для 40 во втором столбце будет показано 70. Тогда в вашей формуле есть второй vlookup в том же диапазоне поиска, но с возвращением второго столбца. Получив два числа (40 и 70 для значения примера 55), вы можете выполнить математику в своей формуле, чтобы определить, что вы будете показывать.

0 голосов
/ 16 августа 2011

Возможно, вы захотите подумать о функции массива (также известной как функция CSE).Если ваша таблица находится в диапазоне A1: A20, а значение поиска - в C1, используйте эту функцию:

=IFERROR(VLOOKUP(C1+MIN(ABS(A$1:A$20-C1)),A$1:A$20,1,FALSE),VLOOKUP(C1-MIN(ABS(A$1:A$20-C1)),A$1:A$20,1,FALSE))

, а затем Control-Shift-Enter (не просто Enter).По сути, это находит минимальную абсолютную разницу между C1 и любым значением в вашей таблице.Затем он пытается добавить его и выполнить VLOOKUP, чтобы увидеть, находится ли он в таблице, если это не удалось, он вычитает его и выполняет VLOOKUP.Немного сложно, но может дать вам идеи.

0 голосов
/ 15 августа 2011

Должно быть быстрым и простым, если затем цикл с использованием VBA. Проверьте разницу между вашим номером и следующими 2 числами в списке. Когда разница с первым номером, который вы знаете, меньше той, которую вы хотите вернуть.

...