Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
472to476
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
472to476
472to476
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Anzeige der Position im Alphabet mit Zahlen

Anzeige der Position im Alphabet mit Zahlen
24.08.2004 14:41:08
Heiko
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!!!
AW: Anzeige der Position im Alphabet mit Zahlen
Boris
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
AW: Anzeige der Position im Alphabet mit Zahlen
Heiko
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.
Anzeige
AW: Anzeige der Position im Alphabet mit Zahlen
Boris
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
AW: Anzeige der Position im Alphabet mit Zahlen
Heiko
Boris, Du bist der Beste!
Danke!
PS: den kleinen Bug (-96) habe ich bemerkt
Uups - 96 fehlte
Boris
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
Anzeige
bitte noch eine kleine Modifikation
Heiko
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
Ohne Leerzeichen
Boris
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
Anzeige
Anzeige der Position im Alphabet Formellösung
Beate
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
Anzeige
AW: Anzeige der Position im Alphabet Formellösung
Heiko
Dank Beate für Deine Mühe.
Da ist mir VBA-Lösung schon viel lieber.
Und das Ganze jetzt noch etwas verkürzt:
Boris
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
@ Boris - Kompliment!
Beate
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

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige