Assuming that if any of your numbers are floating point numbers, then the decimal point is a dot and the decimal portion of the number
never ends with trailing zeroes (that is, you never have a value like 12.30V, rather, it is always presented as 12.3V), then this UDF (user defined function) should work for you...
Code:
[TABLE="width: 500"]
<tbody>[TR]
[TD]Function LetterSum(Rng As Range) As String
Dim X As Long, Num As String, Letter As String, V As Variant, Parts() As String
Parts = Split(Replace(Join(Application.Index(Rng.Value, 1, 0), ","), " ", ""), ",")
With CreateObject("Scripting.Dictionary")
For X = 0 To UBound(Parts)
If Len(Parts(X)) Then
Num = Val(Parts(X))
Letter = Mid(Parts(X), Len(Num) + 1)
.Item(Letter) = .Item(Letter) + Val(Num)
End If
Next
For Each V In .keys
LetterSum = LetterSum & ", " & .Item(V) & " " & V
Next
End With
LetterSum = Mid(LetterSum, 3)
End Function[/TD]
[/TR]
</tbody>[/TABLE]
HOW TO INSTALL UDFs
------------------------------------
If you are new to UDFs, they are easy to install and use. To install it, simply press ALT+F11 to go into the VB editor and, once there, click Insert/Module on its menu bar, then copy/paste the above code into the code window that just opened up. That's it.... you are done. You can now use LetterSum just like it was a built-in Excel function. For example,
=LetterSum(B2:AF2)
If you are using XL2007 or above, make sure you save your file as an "Excel Macro-Enabled Workbook (*.xlsm) and answer the "do you want to enable macros" question as "yes" or "OK" (depending on the button label for your version of Excel) the next time you open your workbook.