Aantal letters in een zin berekenen

Status
Niet open voor verdere reacties.
Ik heb toch aangegeven wat ik heb gedaan om het probleem op te lossen?
 
Dat zie ik niet terug in je startpost;
Ik vroeg me af hoe je in VBA kan berekenen hoevaak alle letters in een zin voorkomen die door de gebruiker is ingevoerd(in percentages).
Dus bijvoorbeeld stel iemand voert in: Ik ga naar huis. Dan komt de letter i : (1/12) = 0.083% keer voor en de letter a: (3/12)= 0.25% keer voor.
Verder mag ik alleen twee functies van de String gebruiken : Len(string) en Mid(string, start, lengte).
Ik dacht aan zoiets:
 
Het helpt als je mijn post volledig citeert.
Hallo allemaal,

Ik vroeg me af hoe je in VBA kan berekenen hoevaak alle letters in een zin voorkomen die door de gebruiker is ingevoerd(in percentages).
Dus bijvoorbeeld stel iemand voert in: Ik ga naar huis. Dan komt de letter i : (1/12) = 0.083% keer voor en de letter a: (3/12)= 0.25% keer voor.
Verder mag ik alleen twee functies van de String gebruiken : Len(string) en Mid(string, start, lengte).
Ik dacht aan zoiets:

http://nl.tinypic.com/r/2q1fpfc/8

maar werkt helaas niet.. als iemand mij kan helpen, heel graag!
 
Ik zie een stukje code meer niet. Dit is het laatste wat ik er over zeg. Hierna zullen offtopic berichten wqorden verwijderd.
 
Waarom een Array van alle letters uit het alfabet ? Door gebruik te maken van Instr maak je een Array van alle unieke letters uit je Zoekstring. Dan moet je enkel door deze Array loopen ipv door alle 26 letters uit het alfabet.

Achter de schermen zal Instr iets soortgelijks doen, dus qua efficiëntie maakt het weinig uit. Wel is het zo dat dan ook niet-letters worden meegenomen, da's dan wel weer een voordeel.
 
Daarom hebben ze dan ook de Like-operator uitgevonden zodat je er enkel de letters kan uithalen.
 
Ik heb een scenario klaar liggen wat werkt, maar het is huiswerk zoals vermeld.

Ik vind het nou niet echt een gemakkelijke opgave (zelfs voor een doorsnee Vba gebruiker niet).
Ik heb enkel de "Instr" functie als extra toevoeging gebruikt.

Het lijkt zo langzamerhand meer op een spelletje poker dan iemand helpen (wie gooit de eerste kaarten op tafel). :)
 
Laten we dat 'huiswerk' maar even vergeten.
Ik vind dit geen 'eerste' opgave in VBA, want een 'histogram' dat toch weer geen histogram is.
Ook de 'beperkingen' voor het gebruik van VBA mogelijkheden duiden op 'clumsy programming'. Lijkt me geen goede manier om het de jongelui te leren.

Zo simpel mogelijk:

Code:
Sub M_snb()
    c00 = InputBox("")
    
    For j = 1 To 26
        If InStr(c00, Chr(j + 96)) Then c01 = c01 & vbLf & Chr(j + 96) & vbTab & FormatPercent((Len(c00) - Len(Replace(c00, Chr(j + 96), ""))) / Len(c00))
    Next
    
    MsgBox c01
End Sub
 
Laatst bewerkt:
Ik durf de mijne haast niet meer te tonen zo simpel als die van jou is @snb. :thumb:
Maar..... er is wel een degelijk verschil in het resultaat.
In jouw code mag de invoer geen spaties bevatten (zo opgelost natuurlijk), en geen hoofdletters.
Daar weet je vast wel weer iets op. ;)

Code:
Sub hsv()
Dim Invoer As String, i As Long, j As Long, y As Long, sn As String, a As Long, b As Long
Invoer = Replace(InputBox("Voer hier je tekst in"), " ", "")
If Len(Invoer) > 0 Then
For i = 1 To Len(Invoer)
 If InStr(1, sn, Mid(Invoer, i, 1)) = 0 Then
  For j = 1 To Len(Invoer)
a = InStr(1, Mid(Invoer, b + i), Mid(Invoer, i, 1))
    If a > 0 Then
      b = b + a
      y = y + 1
    Else
        Exit For
     End If
   Next j
    sn = sn & vbLf & Mid(Invoer, i, 1) & " - " & FormatPercent(IIf(y > 0, y, 1) / Len(Invoer))
 End If
     a = 0
     b = 0
     y = 0
   Next i
 MsgBox sn
 End If
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan