Доля цены облигации конвертируется в десятичную 32-ю формулу Excel - PullRequest
1 голос
/ 09 января 2020

Я почти уверен, что многие люди на рынке капитала испытывают это: используйте Excel Formular для преобразования дроби в десятичные числа в 32-ой

Я знаю, что в большинстве случаев мы просто делим последние две цифры десятичного знака на 32, например:

100-160 = 100 + 16/32 = 100,5 100-200 = 100 + 20/32 = 100,625

, но если 3 знака после запятой: 99-226 = 99 + (22 + 6 /8)/32=99.7109375

как мы можем преобразовать его в формулу в Excel, пожалуйста, помогите !!!!

Ответы [ 2 ]

2 голосов
/ 09 января 2020

Предполагая такую ​​настройку данных, когда ваши цены облигаций указаны в столбце A, а формула десятичного преобразования - в столбце B:

enter image description here

формула в ячейке B2 и скопирована это:

=LEFT(A2,FIND("-",A2)-1)+(MID(A2&"00",FIND("-",A2)+1,2)+MID(SUBSTITUTE(A2,"+",4)&"000",FIND("-",A2)+3,1)/8)/32
0 голосов
/ 11 января 2020

Альтернатива с использованием функции фильтра XML ()

Добавление дополнительного столбца B со следующим xml преобразованием

="<t><a>" &SUBSTITUTE(SUBSTITUTE(A2,"+","4"),"-","</a><b>")&"</b></t>"

, результаты которого можно вычислить в следующий столбец через FilterXML() доступен в Excel 2013 +:

=FILTERXML(B2,"//a")+(LEFT(TEXT(FILTERXML(B2,"//b"),"000"),2)+RIGHT(TEXT(FILTERXML(B2,"//b"),"000"),1)/8)/32

tl; tr - решение с одним столбцом (только для фанатиков)

Конечно, вы можете также принудительно подставьте основание xml в одну формулу:

=FILTERXML("<t><a>" &SUBSTITUTE(SUBSTITUTE(A2,"+","4"),"-","</a><b>")&"</b></t>","//a") + (LEFT(TEXT(FILTERXML("<t><a>" &SUBSTITUTE(SUBSTITUTE(A2,"+","4"),"-","</a><b>")&"</b></t>","//b"),"000"),2)+RIGHT(TEXT(FILTERXML("<t><a>" &SUBSTITUTE(SUBSTITUTE(A2,"+","4"),"-","</a><b>")&"</b></t>","//b"),"000"),1)/8)/32
...