Please, try the next function:
Function extractLetter(rng As Range) As String
extractLetter = Split(Split(rng.Formula, "!$")(1), "$")(0)
End Function
It can be tested using such a ways:
Sub testExtrLetter()
Debug.Print extractLetter(ActiveCell)
End Sub
You can use the next fast way to process a column and return in the next one:
Sub extractAllLetters()
Dim sh As Worksheet, lastR As Long, arrFin, i As Long
Const colLett As String = "G" 'use here the letter of the column to be processed
Set sh = ActiveSheet
lastR = sh.Range(colLett & sh.rows.count).End(xlUp).row 'last row in the processed column
ReDim arrFin(1 To lastR, 1 To 1) 'ReDim the array to receive the processed result
For i = 1 To lastR
arrFin(i, 1) = extractLetter(sh.cells(i, colLett))
Next i
'Drop the final array (arrFin) content, at once:
sh.Range(colLett & 1).Offset(0, 1).Resize(UBound(arrFin), 1).Value2 = arrFin
End Sub