• 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.

aantal karakters in een bestaande kolom verminderen

  • Onderwerp starter Onderwerp starter Fick
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Fick

Gebruiker
Lid geworden
13 nov 2019
Berichten
9
ik heb een Excel-document met meerdere kolommen. In één van die kolommen mogen niet meer dan 100 karakters zitten (dit heeft te maken met het uploaden van het bestand naar een programma).
Hoe breng ik het aantal karakters terug tot maximaal 100? De tekst mag na 100 karakters gewoon afgebroken worden.
Ik heb het geprobeerd met LINKS en met GEGEVENSVALIDATIE, maar het lukt me niet.
Het moge duidelijk zijn, dat het om kolom A gaat, kolom B is de tel-kolom.
 

Bijlagen

Kan toch ook met gegevensvalidatie?
Lengte tekst instellen met een maximum van 100..
 
Oh sorry, zat verkeerd te lezen. Dacht de invoer beperken tot 100 karakters.
Die formule van lam201 is goed!
 
Of om het in dezelfde kolom te houden:
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Column = 1 Then
        If Len(Target.Value) > 100 Then
            Target.Value = Left(Target.Value, 100)
        End If
    End If
End Sub
 
dit lijkt me ook een hele mooie oplossing, maar - als ongeoefende Exceller - vraag ik me af:
- ik heb de Nederlandse versie, is dit dan de áls-dan'functie?
- waar plaats ik dit?
- zou je zo vriendelijk willen zijn de formule als voorbeeld in mijn bijlage te zetten?
Alvast geweldig bedankt!
 

Bijlagen

Het is een stukje VBA achter dat werkblad.
Als je op zo'n lange waarde in kolom A klikt wordt deze automatisch ingekort.
Ik heb er ook stukje bij gemaakt die hetzeldfe doet als je een waarde in een cel van kolom A zelf invult en dan naar een andere cel gaat:
Bekijk bijlage excel forum.xlsm
 
ik vind het geweldig, dat je me zo helpt, maar ik ben een redelijk 'ui' op dit gebied (te simpel van geest denk ik :rolleyes:).
Als ik op de link in jouw antwoord klik, dan krijg ik dat Excel-bestandje te zien, maar ik zie nergens een formule of zo, die ik kan kopiëren naar het bestand waar het om gaat.
Ik weet inmiddels wat VBA betekent, maar ik kan er niks mee.
Zou je me ook nog willen vertellen hoe ik jouw oplossing praktisch kan toepassen in de bestanden, die ik gebruik?
Ter uitleg: het gaat om zo'n 20 verschillende bestanden, waarin ca. 30 kolommen zijn opgenomen, waarvan er één niet langer dan 100 tekens mag zijn.
 
Druk in het open Excel document op de toetscombinatie ALT+F11.
Je komt dat in de Visual Basic Editor (VBE).
Daarin zie je links bovenin de verschillende secties waar code in gebruikt kan worden:
VBA.jpg

Zoals je kan zien is Blad1 geselecteerd (Blauw)
Aan de rechterkant zie je o.a. de code die ik eerder plaatste. (Worksheet_Change)
Dezelfde code staat hierin ook in Worksheet_SelectionChange

Die namen zijn Events (gebeurtenissen) waarin code kan worden uitgevoerd.
Worksheet_Change wordt uitgevoerd als er een waarde in een cel door de gebruiker wordt gewijzigd en deze de cel verlaat.
Worksheet_SelectionChange wordt uitgevoerd als een andere cel actief wordt, bijvoorbeeld door er op te klikken of middels de Enter of Tab toets.
De code is in dit geval voor beide gebeurtenissen gelijk.
Het woord Target staat voor de cel waar de cursor op dat moment is.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 1 Then                       [COLOR="#008000"]'Als we in kolom A staan[/COLOR]
        If Len(Target.Value) > 100 Then             [COLOR="#008000"]'en de lengte van de inhoud van de huidige cel is groter dan 100 posities[/COLOR]
            Target.Value = Left(Target.Value, 100)  [COLOR="#008000"]'maak deze dan 100 posities[/COLOR]
        End If
    End If
End Sub

Voor meer uitleg van Visual Basic for Applications (VBA) verwijs ik naar een gratis cursus:
https://www.excel-pratique.com/en/vba.php
 
Laatst bewerkt:
sorry, dat ik nu pas reageer, kwam griepje tussendoor.
Geweldig bedankt allemaal, ik kan met beide oplossingen ver!!
 
Als je het in 1 keer wil doen
Code:
Sub VenA()
  Cells(3, 1).CurrentRegion.Resize(, 1).Name = "b"
  [b] = [left(b,100)]
End Sub

Het change event zou ik zo schrijven.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Column = 1 And Target.Count = 1 Then
    Application.EnableEvents = False
    Target = Left(Target, 100)
    Application.EnableEvents = True
  End If
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan