Perhaps you could use a macro like this?
Sub Chem_Format()
Dim cell As Range
Dim s As String
Dim i As Long
For Each cell In Selection
s = cell.Text
For i = 1 To Len(s) - 1
If Mid(s, i, 2) Like "[A-Za-z)]-" Then cell.Characters(i + 1, 1).Font.Superscript = True
If Mid(s, i, 2) Like "[A-Za-z)]+" Then cell.Characters(i + 1, 1).Font.Superscript = True
If Mid(s, i, 2) Like "[A-Za-z)]#" Then cell.Characters(i + 1, 1).Font.Subscript = True
If Mid(s, i, 3) Like "[A-Za-z)]#-" Then cell.Characters(i + 1, 2).Font.Superscript = True
If Mid(s, i, 3) Like "[A-Za-z)]#+" Then cell.Characters(i + 1, 2).Font.Superscript = True
If Mid(s, i, 4) Like "[A-Za-z)]##-" Then cell.Characters(i + 2, 2).Font.Superscript = True
If Mid(s, i, 4) Like "[A-Za-z)]##+" Then cell.Characters(i + 2, 2).Font.Superscript = True
If Mid(s, i, 2) Like "[Mm]#" Then cell.Characters(i + 1, 1).Font.Superscript = True
Next i
Next cell
End Sub
Select the range you whish to "transfer" and run macro. The only problem with this macro is if the charge is + or - one unit and the number of molecules before the + or - is equal or greater than 2 it will transfer molecule number to charge number. One workaround is writing NO3- as NO31- and edit.
Don't remember the original author of this macro. I think snb or shg wrote it and I've extended it to transfer more complex formulas.
Alf
Bookmarks