Microsoft Excel

Herbers Excel/VBA-Archiv

Anzeige der Position im Alphabet mit Zahlen

Betrifft: Anzeige der Position im Alphabet mit Zahlen von: Heiko
Geschrieben am: 24.08.2004 14:41:08

Hallo Excel-Freunde!
Ich suche nach einer Lösung zu folgendem Problem.
In einer Zelle (A1) wird ein Wort eingegeben (z.B. Baum).
In der benachbarten Zelle oder in einer Msg-Box soll die Anzeige der Position im Alphabet der einzelnen Buchstaben mit Zahlen erfolgen.
In einer dritten Spalte oder in einer Msg-Box erscheint die Summe der emittelten Zahlen.

Beispiel:
Wort: Baum
Anzeige
B=2
A=1
U=21
M=13
Summe=37 (BAUM)

Kann mir hier jemand bitte helfen?
Bisher habe ich es hierher geschaft:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = "$A$1" Then
Dim dummy As String
For zahlencode = 1 To Len(Range("A1").Value)
dummy = dummy & Str(Asc(Mid(UCase(Range("A1").Value), zahlencode, 1)) - 64)
Next
Range("A2").Value = Replace(dummy, "-32", "")
End If
End Sub


Danke Euch!!!
  


Betrifft: AW: Anzeige der Position im Alphabet mit Zahlen von: Boris
Geschrieben am: 24.08.2004 14:56:56

Hi Heiko,

z.B. so:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim i As Integer, iCol As Integer, strTemp As String
With Target
    If .Column <> 1 Then Exit Sub
    iCol = 2
    strTemp = LCase(.Text)
    For i = 1 To Len(strTemp)
        Cells(.Row, iCol) = Asc(Mid(strTemp, i, 1)) - 96
        iCol = iCol + 1
    Next i
    Cells(.Row, iCol) = "Summe: " & Application.Sum(Range(Cells(.Row, 2), Cells(.Row, iCol - 1)))
End With
End Sub


Reagiert auf jede Eingabe in Spalte A.

Grüße Boris


  


Betrifft: AW: Anzeige der Position im Alphabet mit Zahlen von: Heiko
Geschrieben am: 24.08.2004 15:08:40

Hallo Boris,

danke für Deine schnelle Reaktion.
Das sieht schonmal ganz gut aus. Leider ist die Variante mit dem Fortschreiben in den Nachbarzellen nicht geeignet.
Kannst Du das auch so umschreiben, daß die Ausgabe in einer Zelle oder in einer Msg-Box erfolgt?

Ich danke Dir.


  


Betrifft: AW: Anzeige der Position im Alphabet mit Zahlen von: Boris
Geschrieben am: 24.08.2004 15:17:27

Hi Heiko,

alles in der Nachbarzelle:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim i As Integer, s As String, intSum As Integer
With Target
    If .Column <> 1 Then Exit Sub
    For i = 1 To Len(.Text)
        s = s & Asc(Mid(LCase(.Text), i, 1)) & ", "
        intSum = intSum + Asc(Mid(LCase(.Text), i, 1))
    Next i
    Cells(.Row, 2) = s & "Summe: " & intSum
    Columns(2).AutoFit
End With
End Sub


Grüße Boris


  


Betrifft: AW: Anzeige der Position im Alphabet mit Zahlen von: Heiko
Geschrieben am: 24.08.2004 15:31:39

Boris, Du bist der Beste!

Danke!

PS: den kleinen Bug (-96) habe ich bemerkt


  


Betrifft: Uups - 96 fehlte von: Boris
Geschrieben am: 24.08.2004 15:32:42

Hi Heiko,

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim i As Integer, s As String, intSum As Integer
With Target
    If .Column <> 1 Then Exit Sub
    For i = 1 To Len(.Text)
        s = s & Asc(Mid(LCase(.Text), i, 1)) - 96 & ", "
        intSum = intSum + Asc(Mid(LCase(.Text), i, 1)) - 96
    Next i
    Cells(.Row, 2) = s & "Summe: " & intSum
    Columns(2).AutoFit
End With
End Sub


Grüße Boris


  


Betrifft: bitte noch eine kleine Modifikation von: Heiko
Geschrieben am: 27.08.2004 13:50:25

Hallo Boris,
der Code funktioniert einwandfrei.
Wie kann ich jedoch die Leerzeichen aus der Konvertierung und Zählung raus lassen?
Beispiel:
Baum = 4
Ba um = 4

Danke und ein schönes Wochenende


  


Betrifft: Ohne Leerzeichen von: Boris
Geschrieben am: 27.08.2004 16:12:45

Hi Heiko,

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim i As Integer, s As String, intSum As Integer, strTemp As String
With Target
    If .Column <> 1 Then Exit Sub
    strTemp = LCase(WorksheetFunction.Substitute(.Text, " ", ""))
    For i = 1 To Len(strTemp)
        s = s & Asc(Mid(strTemp, i, 1)) - 96 & ", "
        intSum = intSum + Asc(Mid(strTemp, i, 1)) - 96
    Next i
    Cells(.Row, 2) = s & "Summe: " & intSum
    Columns(2).AutoFit
End With
End Sub


Grüße Boris


  


Betrifft: Anzeige der Position im Alphabet Formellösung von: Beate Schmitz
Geschrieben am: 24.08.2004 15:27:41

Hallo Heiko,

es geht auch mit einer Formellösung, mit dem Nachteil, man müßte wissen, wieviele Buchstaben im String stehen, aber hier mal das Beispiel Baum/BAUM:

Tabelle1
 CD
21Baum37
22BAUM37
Formeln der Tabelle
D21 : =CODE(TEIL(GROSS(C21);1;1))-64+CODE(TEIL(GROSS(C21);2;1))-64+CODE(TEIL(GROSS(C21);3;1))-64+CODE(TEIL(GROSS(C21);4;1))-64
D22 : =CODE(TEIL(GROSS(C22);1;1))-64+CODE(TEIL(GROSS(C22);2;1))-64+CODE(TEIL(GROSS(C22);3;1))-64+CODE(TEIL(GROSS(C22);4;1))-64
 
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML  3.0    Download  


Da Kleinbuchstaben Codemäßig jeweils 64 über ihren grossen Pendents liegen, habe ich, um Fehler abzufangen, Großbuchstaben sichergestellt mit der Funktion GROSS und dann jeweils 64 abgezogen. Dann das Ganze ausgelesen mit der Funktion CODE, die reagiert aber nur auf das erste Stringzeichen, deshalb habe ich die Funktion TEIL noch mit reingepackt und so die Buchstaben der Reihe nach angesprochen.

Boris Lösung ist ja perfekt - aber ich wollte mal formelmäßig die Möglichkeiten austesten und deshalb hier das Ergebnis.

Gruß,
Beate


  


Betrifft: AW: Anzeige der Position im Alphabet Formellösung von: Heiko
Geschrieben am: 24.08.2004 15:32:54

Dank Beate für Deine Mühe.
Da ist mir VBA-Lösung schon viel lieber.


  


Betrifft: Und das Ganze jetzt noch etwas verkürzt: von: Boris
Geschrieben am: 24.08.2004 15:35:44

Hi Beate,

=SUMMENPRODUKT(CODE(KLEIN(TEIL(A1;ZEILE(INDIREKT("1:"&LÄNGE(A1)));1)))-96)

Dann ist die Stringlänge auch egal.

Grüße Boris


  


Betrifft: @ Boris - Kompliment! von: Beate Schmitz
Geschrieben am: 24.08.2004 17:05:21

An LÄNGE und INDIREKT hatte ich auch gedacht, aber die Kombi machts und SUMMENPRODUKT hatte ich noch nicht auf dem Plan. Sehr geschickt.

Gruß,
Beate


 

Beiträge aus den Excel-Beispielen zum Thema "Anzeige der Position im Alphabet mit Zahlen"