Tak jsem na to došel. Je to vlastně velice jednoduché. Sice systém tvorby horního indexu neznám, ale lze jej také najít mezi symboly resp. speciálními znaky (všechna čísla a matematické značky jako dolní i horní indexy). Takže vzorec může vypadat třeba takto:
=INDEX(dictionary!$B$1:$C$300;12;$N$2)&UNICHAR(8317)&UNICHAR(185)&UNICHAR(8318)
graficky to není tak zdařilé jako u "klasicky" formátovaného indexu, ale spokojil jsem se. Ještě jsem si upravil funkci (upravenou LP) na náhradu diakritiky a mám hotovo. Akorát si holt člověk musí trochu pohrát s těmi okrajovými znaky, závorky chr(8317) resp. 8318 je posazena výše než čísla, tak to nevypadalo moc dobře.
REM FUNKCE MakeIndex(TEXT) vytvoří horní index ze zadaného čísla mezi dvěma svislými čarami
Function MakeIndex (stext as string)
Dim i as integer
number = array("0", "1","2","3","4", "5", "6","7", "8", "9")
h_index = array(186,185,178,179,8308,8309,8310,8311,8312,8313)
For i = lbound(number()) to ubound(number())
stext = Replace(stext, number(i), chr(h_index(i)))
Next i
MakeIndex = chr(32) & chr(7477) & stext & chr(7477)
End Function
Samozřejmě obecnější funkce na úpravu části textu v buňce by bodla, ale už to tak nehoří. Na anglickém fóru nějaký náznak proběhl, dalo by se to vytvořit, ale není to zdaleka tak snadné :-)