2017-03-16 5 views
0

Wie berechnen wir die Summe der zugehörigen Zahlen mit Buchstaben in Excel? Daten werden unten erwähnt. Ich habe jedem Buchstaben einen Wert zugewiesen.Excel-Makro-Formel für die Berechnung von Zahlen mit Buchstaben

"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"

und ihre Werte jeweils:

1,2,3,4,5,8,3,5,1,1,2,3,4,5,7,8,1,2,3,4,6,6,6,5,1,7

Wenn ich jedes Wort in der Excel eingeben, muss er zurückkehrt einstelligen.

Zum Beispiel - die Summe des Wortes "google" ist (3 + 7 + 7 + 3 + 3 + 5) = 28 = 10 = 1 Endergebnis.

Wie können wir das erreichen?

+2

Warum sollte die Summe von 1, 2, 5, 1 und 9 seine 9 entfernen müssen? Und was meinen Sie "und so weiter" - ich kann keine Beziehung zwischen den von Ihnen gelieferten Buchstaben und ihren entsprechenden Werten erkennen. Woher wissen wir also, welche Werte mit anderen Buchstaben verknüpft werden sollten? – YowE3K

+0

Ich dachte, Sie könnten benannte Werte verwenden (genauso wie benannte Bereiche, außer dass sie einen statischen Wert referenzieren), aber Sie können 'C' oder' R' nicht als Namen und möglicherweise einige andere Buchstaben verwenden. Sie könnten dann '= SUM (A, B, D, H)' verwenden, um 13 zurückzugeben. –

+0

Ich habe jedem Buchstaben einen Wert zugewiesen. "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", " M, N, O, P, Q, R, S, T, U, V, W, X, Y , "Z"; und ihre Werte 1,2,3,4,5,8,3,5,1,1,2,3,4,5,7,8,1,2,3,4,6,6,6, 5,1,7 jeweils. Wenn ich ein beliebiges Wort in der Excel eingeben, muss es eine einzelne Ziffer zurückgeben. Zum Beispiel - die Summe des Wortes "google" ist (3 + 7 + 7 + 3 + 3 + 5) = 28 = 10 = 1 Endergebnis. –

Antwort

1

Fügen Sie den folgenden Code zu einem Modul:

Sub test() 
    Debug.Print SumChars("ABCd") 
End Sub 

Public Function SumChars(strInput As String) As Double 
    Dim arrChar(), arrVals() 
    arrChar = Array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z") 
    arrVals = Array(1, 2, 3, 4, 5, 8, 3, 5, 1, 1, 2, 3, 4, 5, 7, 8, 1, 2, 3, 4, 6, 6, 6, 5, 1, 7) 

    Dim dblSum As Double 
    dblSum = 0 

    Dim i As Integer, j As Integer 
    For i = 1 To Len(strInput) 
     For j = LBound(arrChar) To UBound(arrChar) 
      If UCase(arrChar(j)) = UCase(Mid(strInput, i, 1)) Then 
       dblSum = dblSum + arrVals(j) 
      End If 
     Next j 
    Next i 

    Do While Len(CStr(dblSum)) > 1 
     dblSum = DigitSum(dblSum) 
    Loop 
    SumChars = dblSum 
End Function 

Private Function DigitSum(dblValue As Double) As Double 
    Dim i As Integer, dblSum As Double 

    For i = 1 To Len(CStr(dblValue)) 
     dblSum = dblSum + Mid(CStr(dblValue), i, 1) 
    Next i 

    DigitSum = dblSum 
End Function 

Und Sie =SumChars("ABC") in jeder Zelle verwenden können. Um es empfindlich zu machen, falls Sie die UCase

If arrChar(j) = Mid(strInput, i, 1) Then 
+0

Die Frage ist zu weit - aber ich mag Ihre Antwort ... Nur, dass Sie nicht tun OP letzte Schritt 28 zu 1 das 'google' Beispiel konvertieren . Z.B. 28 = 1, weil "2 + 8 = 10" und "1 + 0 = 1". OP will Numerologie-Rechner. –

+0

Es funktioniert. Aber wenn ich ein Wort wie "wwwwwwwww" eingeben, gibt es 54 zurück, weiter muss es 9 zurückgeben. –

+0

Mein schlechter sah das nicht. Ich habe meine Antwort aktualisiert. @RobinMackenzie aber du hast recht, offensichtlich ist die Frage zu breit. Ich verspreche, mich zu verbessern. –

0

Setzen Sie die Buchstaben in ein Array und ihre entsprechenden Werte in ein Array ein und durchlaufen Sie das Array, bis Sie den gewünschten Buchstaben treffen und den Wert aus dem verknüpften Zahlenfeld zurückgeben.

Function LetterValues(letter As Variant) 

Dim letters() As Variant, numbers() As Variant 

letters = Array("A", "B", "C") 
numbers = Array(1, 2, 3) 

For x = 0 To UBound(letters) 
    If letters(x) = letter Then 
     LetterValues = numbers(x) 
     Exit Function 
    End If 
Next x 

End Function 

Sub TestFunction() 

Dim result As Variant 

result = LetterValues("A") 

End Sub 

Sie könnten dies in einem Unter verwenden oder als User Defined Function indem sie sie in einem Modul platzieren.

Dieses Beispiel gibt den Wert eines Buchstabens zurück, aber Sie können ihn problemlos ändern, um ein ganzes Wort zurückzugeben.

Verwandte Themen