Acabei de adicionar ao código fornecido por ScottS, então "^" ou "_" podem ser usados para preceder caracteres. Observe que TODOS os seguintes caracteres serão sub / super-scripts se você usar esses caracteres. Por exemplo, Q_in (m ^ 3 / s) não será exibido corretamente, você precisará usar a sintaxe de ScottS para isso: Q < em > (m {3} / s). O código aqui funcionará para a sintaxe de ScottS, mas também inclui opções "_" e "^", como Q_in ou Q_supply gas, em que "supply gas" é subscrito.
Para aqueles que não estão familiarizados com macros:
Se você não tiver uma guia "Desenvolvedor" no Excel, precisará ativá-la e salvar a planilha como uma planilha habilitada para macro. Botão Office (botão circular superior esquerdo) > clique em "Opções do Excel" no canto inferior direito > visualizando a guia "Popular", selecione "Mostrar guia do desenvolvedor na faixa de opções"
Você precisará adicionar essa macro: "Alt + F11" e "Inserir" > "módulo" e cole o código abaixo. Você pode definir um atalho de teclado pressionando "Alt + F8" enquanto visualiza planilha ou clique no botão "Macros" na guia "Desenvolvedor". Selecione / highlite esta macro (Super_Sub_mod) e clique em "Opções ..." é onde você pode definir um atalho começando com "Ctrl", como "Ctrl + j", simplesmente digitando "j" na caixa.
As alterações não são feitas automaticamente apenas porque você tem a sintaxe correta. Você deve selecionar células individuais ou múltiplas depois de escrevê-las com o "_" "^" "{text}" "< text >" sintaxe, em seguida, execute a macro.
Sub Super_Sub_mod()
'
' Keyboard Shortcut: set in "options" of macro window (alt+F8 in spreadsheet view)
'
' If the characters are preceded by an underscore "_" then they will be subscripted
' If the characters are preceded by "^" then they will be superscripted
'
Dim NumSub
Dim NumSuper
Dim SubL
Dim SubR
Dim SuperL
Dim SuperR
Dim CheckSub, CheckSuper As Boolean
Dim CounterSub, CounterSuper As Integer
Dim aCell, CurrSelection As Range
For Each c In Selection
c.Select
CheckSub = True
CounterSub = 0
CheckSuper = True
CounterSuper = 0
aCell = ActiveCell
'
'Subscripts
'all following "_"
If Len(aCell) = 0 Then Exit Sub
If IsError(Application.Find("_", ActiveCell, 1)) = False Then
NumSub = Len(aCell) - Len(Application.WorksheetFunction.Substitute(aCell, "_", ""))
Do
Do While CounterSub <= 1000
SubL = Application.Find("_", ActiveCell, 1)
SubR = Len(ActiveCell)
ActiveCell.Characters(SubL, 1).Delete
ActiveCell.Characters(SubL, SubR - SubL).Font.subscript = True
CounterSub = CounterSub + 1
If CounterSub = NumSub Then
CheckSub = False
Exit Do
End If
Loop
Loop Until CheckSub = False
End If
'select region "<text>"
If IsError(Application.Find("<", ActiveCell, 1)) = False Then
NumSub = Len(aCell) - Len(Application.WorksheetFunction.Substitute(aCell, "<", ""))
Do
Do While CounterSub <= 1000
SubL = Application.Find("<", ActiveCell, 1)
SubR = Application.Find(">", ActiveCell, 1)
ActiveCell.Characters(SubL, 1).Delete
ActiveCell.Characters(SubR - 1, 1).Delete
ActiveCell.Characters(SubL, SubR - SubL - 1).Font.subscript = True
CounterSub = CounterSub + 1
If CounterSub = NumSub Then
CheckSub = False
Exit Do
End If
Loop
Loop Until CheckSub = False
End If
'
'Superscripts
'all following "_"
If IsError(Application.Find("^", ActiveCell, 1)) = False Then
NumSuper = Len(aCell) - Len(Application.WorksheetFunction.Substitute(aCell, "^", ""))
Do
Do While CounterSuper <= 1000
SuperL = Application.Find("^", ActiveCell, 1)
ActiveCell.Characters(SuperL, 1).Delete
ActiveCell.Characters(SuperL, SuperR - SuperL).Font.Superscript = True
CounterSuper = CounterSuper + 1
If CounterSuper = NumSuper Then
CheckSuper = False
Exit Do
End If
Loop
Loop Until CheckSuper = False
End If
'select region "{text}"
If IsError(Application.Find("{", ActiveCell, 1)) = False Then
NumSuper = Len(aCell) - Len(Application.WorksheetFunction.Substitute(aCell, "{", ""))
Do
Do While CounterSuper <= 1000
SuperL = Application.Find("{", ActiveCell, 1)
SuperR = Application.Find("}", ActiveCell, 1)
ActiveCell.Characters(SuperL, 1).Delete
ActiveCell.Characters(SuperR - 1, 1).Delete
ActiveCell.Characters(SuperL, SuperR - SuperL - 1).Font.Superscript = True
CounterSuper = CounterSuper + 1
If CounterSuper = NumSuper Then
CheckSuper = False
Exit Do
End If
Loop
Loop Until CheckSuper = False
End If
Next
End Sub