• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Tellen van letters in een cel

Status
Niet open voor verdere reacties.

Topper6628

Gebruiker
Lid geworden
5 mei 2005
Berichten
26
Hallo,

Ik wil het aantal keer dat een letter/teken in een cel voorkomt kunnen tellen via een formule of zo. Het gaat om het aantal mutaties in een planning te kunnen tellen. In kolom A staan de origineel geplande aantallen. In kolom B worden de extra aantallen gezet. vb (10+2+8+12). In dit voorbeeld zijn dus 4 muaties. Nu wilde ik het aantal + tekens kunnen tellen. Daar tel ik 1 op en heb het aantal mutaties. Weet iemand hier een oplossing voor.

Bedankt,
 
Hallo Topper,

In de ZIP een voorbeeld om de ++'en te tellen.
 

Bijlagen

Een beetje van....

Hallo Jan en Luc,

Ik heb getracht om een combinatie van jullie oplossingen te maken, maar daarvoor is mijn VBA kennis net te weinig. Het mooie aan de oplossing van Luc vind ik dat je het als Excel functie kunt gebruiken en de gegevens dynamisch bijgehouden worden. De oplossing van Jan geeft me het gewenste resultaat, namelijk het aantal + tekens (als getal).

Op zich kan ik nu al wel vooruit want ik gebruik bij de oplossing van Luc de functie LENGTE() om het aantal tekens te tellen en dan ben ik ook waar ik wil zijn. Echter zou ik het mooi vinden de oplossing ook in VBA beschikbaar te hebben. Deze gaat dan in mijn mapje favoriete Excel oplossingen.

Onderstaand de beide oplossingen. Als een van jullie die voor mij samen zou kunnen voegen ben ik je zeer dankbaar. :thumb:

-------------

Function PlusEruit(ByVal strInString As String) As String
Dim lngLen As Long, strOut As String
Dim i As Long, strTmp As String
lngLen = Len(strInString)
strOut = ""
For i = 1 To lngLen
strTmp = Left$(strInString, 1)
strInString = Right$(strInString, lngLen - i)
If Asc(strTmp) = 43 Then
strOut = strOut & strTmp
End If
Next i
PlusEruit = strOut
'voorbeeld: =PlusEruit(A1)
End Function

------

Sub TelPlus()
'
' TelPlus Macro
'
Dim i, a As Integer

If ActiveCell.Formula <> "" Then
a = 0
For i = 1 To Len(ActiveCell.Formula)
If Asc(Mid(ActiveCell, i, 1)) = 43 Then
a = a + 1
End If
Next
MsgBox ("Er zijn " & a & " +-jes geteld." & vbCrLf & "Er zijn dan " & a + 1 & " mutaties geweest.")
ActiveCell.Offset(0, 1).Formula = a
End If
End Sub
 
Laatst bewerkt:
Als de optellingen in kolom B staan, beginnend in B1, typ dan voor het aantal mutaties in C1:
=ALS(B1="";"";LENGTE(B1)+1-LENGTE(SUBSTITUEREN(B1;"+";"")))
en kopieer naar beneden in kolom C.

Franç.
 
Eenvoudig maar doeltreffend

Hé Franç

Eenvoudig maar doeltreffend. Toevallig dat ik in de huidige sheet al macro's had zitten dus maakt het niet veel uit dat de oplossingen van Jan en Luc in VBA zijn maar deze kan ik ook in sheets gebruiken waarin geen macro's toegestaan zijn.

Dank je wel :thumb:
 
In de bijlage een aangepaste versie.

Hierin ook de verschillen aangegeven van de aangedragen oplossingen.
Ik weet niet of Topper6628 de mutaties als tekst of als formule opgeeft.
Bij de oplossing van Luc en Franç geeft dit een verschillend resultaat.
Met een kleine aanpassing in de macro is dit ondervangen.
 

Bijlagen

Mijn oorsprokelijke Funktie aangepast.

Het ging toch om het aantal mutaties in je 1e vraag.
 

Bijlagen

Nog niet helemaal

Luc, Franç,

Ik heb in het enthousiasme dat ik dacht een oplossing gevonden te hebben er inderdaad niet meer bij stil gestaan dat de mutaties als formule ingegeven worden dus als: =2+8+12+5+1 :confused: . Hierdoor zie je in de cel alleen het resultaat staan (28). Met jullie formules worden er dan geen plus tekens geteld. Jan jouw macro geeft in beide gevallen de juiste uitkomst, maar zoals eerder aangegeven zie ik het liever in een formule, zodat de waarde direct aangepast wordt zonder iets op te hoeven starten. Is het mogelijk om jou oplossing om te zetten naar een formule?
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan