HERHALING
REPT in Engelstalige Excel
Zet dezelfde tekst een opgegeven aantal keer achter elkaar en levert dat op als één tekst.
Laatst bijgewerkt: 13 oktober 2026
| Rij | A | B | C |
|---|---|---|---|
| 1 | Controlegebied | Risicoscore | Risico |
| 2 | Omzet | 55 | ●●●●●=HERHALING("●", B2)=HERHALING("●"; B2) |
| 3 | Personeelskosten | 33 | |
| 4 | Huisvestingskosten | 11 | |
| 5 | Debiteuren | 44 | |
| 6 | Voorraad | 22 |
Veeg opzij om alle kolommen te zien
Resultaat: ●●●●●
=HERHALING("●",B2)
=HERHALING("●";B2)
Wat HERHALING doet en wanneer je het gebruikt
Wat het doet: het herhaalt een tekst een aantal keer, bijvoorbeeld een blokje tien keer om een staafje naast een bedrag te tekenen.
Wanneer je het gebruikt: als het aantal herhalingen uit je gegevens komt: een score als rij sterren, een bedrag als staaf, een nummer met nullen aangevuld tot de lengte die een importbestand wil. Wil je een vast aantal voorloopnullen bij een getal, dan is TEKST met de code 000000 korter.
Hoe Excel de functie berekent
Excel leest tekst en maakt er tekst van als er een getal staat. Daarna leest het aantal_malen en kapt de decimalen af. Dan geldt:
- is het aantal negatief, dan stopt Excel met #WAARDE!
- is het 0, dan komt er lege tekst uit
- anders zet Excel de tekst zo vaak achter elkaar, zonder iets ertussen, en controleert of de uitkomst binnen 32.767 tekens blijft
Wat eruit komt is altijd tekst, ook als het alleen cijfers zijn.
Let op: HERHALING kapt de decimalen van het aantal af in plaats van af te ronden: bij 8,7 verschijnen 8 blokjes. Wil je er 9 zien, zet het aantal dan in AFRONDEN(x; 0).
Denkmodel
Een stempel die je een afgeteld aantal keer langs een lijn zet, elke afdruk direct tegen de vorige aan.
HERHALING(tekst,aantal_malen)
HERHALING(tekst;aantal_malen)
| Argument | Soort | Betekenis |
|---|---|---|
tekst | Verplicht | Het teken of de tekst die je herhaalt, tussen aanhalingstekens of uit een cel. |
aantal_malen | Verplicht | Hoe vaak; decimalen vallen weg, 0 geeft lege tekst, onder 0 is een fout. |
Geeft terug:Tekst: tekst, zo vaak herhaald als aantal_malen aangeeft
Formules gebruiken komma's (,) tussen de argumenten, zoals in de Engelse Excel. Formules gebruiken puntkomma's (;) tussen de argumenten, zoals in de Nederlandse Excel. Formules gebruiken puntkomma's (;) tussen de argumenten, zoals in de Nederlandse Excel; de Engelse Excel gebruikt komma's (,).
Uitgewerkte voorbeelden
Beginner
Risicoscores per controlegebied als bolletjes
In het controleplan voor Veldhuis Installatie BV geef je per controlegebied een score voor het risico op een afwijking van materieel belang, van 1 (laag) tot 5 (hoog). In het overzicht voor het team moet je die scores in één oogopslag kunnen zien, als een rij bolletjes naast elk controlegebied.
| Rij | A | B | C | D |
|---|---|---|---|---|
| 1 | Controlegebied | Risicoscore | Risico | |
| 2 | Omzet | 55 | ●●●●●=HERHALING("●", B2)=HERHALING("●"; B2) | |
| 3 | Personeelskosten | 33 | ||
| 4 | Huisvestingskosten | 11 | ||
| 5 | Debiteuren | 44 | ||
| 6 | Voorraad | 22 | ||
| 7 |
Veeg opzij om alle kolommen te zien
Formule in C2
=HERHALING("●",B2)
=HERHALING("●";B2)
Resultaat: ●●●●●
Stap voor stap
- Het eerste argument is het bolletje tussen aanhalingstekens: dat is tekst.
- Voor aantal_malen kijkt Excel in
B2en vindt 5. Dat is een geheel getal, dus er valt niets af te kappen. - Excel zet het bolletje 5 keer achter elkaar, zonder iets ertussen: ●●●●●. In
C2staan vijf bolletjes voor omzet. - Kopieer
C2omlaag:C3toont 3 bolletjes,C4er 1,C5er 4 enC6er 2. Hoe lang een rij is, hangt af van de risicoscore. - Zet
B4op 0 enC4wordt leeg: HERHALING met 0 levert lege tekst op, geen foutwaarde.
Let op: Zijn de scores gemiddelden van meerdere beoordelaars, zoals 3,8, dan tekent HERHALING 3 bolletjes en geen 4, want het kapt af. Moet 3,8 eruitzien als een 4, rond de score dan eerst af.
Meer over dit voorbeeld: waarom het werkt, 1 variant
Waarom het werkt
aantal_malen komt uit de cel, dus elke rij tekent zijn eigen aantal bolletjes en de kolom wordt een kleine grafiek. De bolletjes zijn echte teksttekens, dus als je ze naar het controleplan of een e-mail kopieert, gaan ze mee.
Varianten
=HERHALING("●",B2) & HERHALING("○", 5 - B2)
=HERHALING("●";B2) & HERHALING("○"; 5 - B2)
Vult de overige van de vijf plaatsen met open bolletjes, zodat elke rij 5 tekens breed is: ●●●○○.
Halfgevorderd
Staafjes in de cel voor de ouderdomsanalyse debiteuren
Je hebt de ouderdomsanalyse debiteuren per 31 december 2025, met één totaal per categorie. Naast elk bedrag wil je in één blik zien waar het saldo zit, zonder een grafiek te bouwen. Eén blokje staat voor 10,00010.000 euro; die schaal staat in een aparte cel, zodat je hem kunt aanpassen.
| Rij | A | B | C | D | E | F |
|---|---|---|---|---|---|---|
| 1 | Categorie | Saldo | Staaf | Bedrag per blokje | ||
| 2 | Nog niet vervallen | €118,300.00€ 118.300,00 | ▇▇▇▇▇▇▇▇▇▇▇▇=HERHALING("▇", AFRONDEN(B2 / $E$2, 0))=HERHALING("▇"; AFRONDEN(B2 / $E$2; 0)) | 1000010000 | ||
| 3 | 1 tot 30 dagen vervallen | €87,400.00€ 87.400,00 | ||||
| 4 | 31 tot 60 dagen vervallen | €42,500.00€ 42.500,00 | ||||
| 5 | 61 tot 90 dagen vervallen | €15,000.00€ 15.000,00 | ||||
| 6 | Meer dan 90 dagen vervallen | €3,200.00€ 3.200,00 | ||||
| 7 |
Veeg opzij om alle kolommen te zien
Formule in C2
=HERHALING("▇",AFRONDEN(B2 / $E$2, 0))
=HERHALING("▇";AFRONDEN(B2 / $E$2; 0))
Resultaat: ▇▇▇▇▇▇▇▇▇▇▇▇
Stap voor stap
- Excel begint binnenin: B2 / $E$2 is 118,300118.300 / 10,00010.000 = 11,83.
- AFRONDEN(11,83; 0) rondt af op het dichtstbijzijnde gehele getal: 12.
- HERHALING zet het blokje 12 keer neer: ▇▇▇▇▇▇▇▇▇▇▇▇. In
C2staat een staaf van 12 blokjes. - Zonder AFRONDEN kreeg HERHALING 11,83 en kapte dat af tot 11; de staaf voor 118,300118.300 was dan even lang als die voor 110,000110.000. Dankzij AFRONDEN komt hij dichter bij 120,000120.000 uit.
Kopieer
C2omlaag:C3: 87,40087.400 / 10,00010.000 = 8,74, afgerond 9 blokjesC4: 42,50042.500 / 10,00010.000 = 4,25, afgerond 4C5: 15,00015.000 / 10,00010.000 = 1,5, van nul af afgerond naar 2C6: 3,2003.200 / 10,00010.000 = 0,32, afgerond 0, dusC6blijft leeg en toont geen foutwaarde
- Zet
E2op 20,00020.000 en alle staven worden ongeveer half zo lang:C2wordt AFRONDEN(5,915; 0) = 6 blokjes. Door de $-tekens blijven alle vijf rijen naarE2verwijzen.
Let op: Zonder de $ in $E$2 verschuift de schaal bij het kopiëren naar E3, E4 enzovoort, en die cellen zijn leeg. Delen door een lege cel geeft #DEEL/0!, en elke staaf onder de eerste wordt een foutwaarde.
Meer over dit voorbeeld: waarom het werkt, nog 1 valkuil, 1 variant
Waarom het werkt
Door te delen door een schaal maak je van euro's een aantal blokjes dat in een kolom past, en AFRONDEN neemt het dichtstbijzijnde aantal, waar HERHALING op zichzelf altijd naar beneden zou afkappen. Het saldo van de oudste categorie is klein, dus de staaf laat ook zien hoe weinig van de vordering kans loopt oninbaar te zijn.
Meer om op te letten
- De categorie ouder dan 90 dagen, 3,2003.200 euro, wordt afgerond op 0 blokjes en ziet er dan hetzelfde uit als een lege categorie. Juist die categorie bekijk je het kritischst op oninbaarheid, dus zet het bedrag naast de staaf.
Varianten
=HERHALING("▇",B2 / $E$2)
=HERHALING("▇";B2 / $E$2)
Zonder AFRONDEN worden de staven altijd naar beneden afgekapt; geen probleem als de schaal zo fijn is dat één blokje meer of minder niet uitmaakt.
Gevorderd
Sleutels met vaste breedte voor een factuurtest
Je data-analysetool koppelt openstaande facturen tussen de subadministratie en het grootboek met een tekstbestand met vaste veldbreedtes: eerst het factuurnummer als precies 6 cijfers met voorloopnullen, direct daarachter de klantnaam als precies 12 tekens, aangevuld met spaties of afgekapt. Je stelt elke regel samen in het werkblad en slaat de kolom op als tekstbestand.
| Rij | A | B | C | D |
|---|---|---|---|---|
| 1 | Factuurnr. | Klant | Koppelsleutel | |
| 2 | 8282 | Brinkman BV | 000082Brinkman BV=HERHALING("0", 6 - LENGTE(A2)) & A2 & LINKS(B2 & HERHALING(" ", 12), 12)=HERHALING("0"; 6 - LENGTE(A2)) & A2 & LINKS(B2 & HERHALING(" "; 12); 12) | |
| 3 | 44174417 | Bakkerij Smit | ||
| 4 | 13051305 | Okafor IT | ||
| 5 | 2727 | Hendriks Groothandel | ||
| 6 | 950950 | Mol & Zn | ||
| 7 |
Veeg opzij om alle kolommen te zien
Formule in C2
=HERHALING("0",6 - LENGTE(A2)) & A2 & LINKS(B2 & HERHALING(" ", 12), 12)
=HERHALING("0";6 - LENGTE(A2)) & A2 & LINKS(B2 & HERHALING(" "; 12); 12)
Resultaat: 000082Brinkman BV
Stap voor stap
- Excel begint met het nummer. LENGTE(A2) maakt van 82 de tekst 82 en telt 2 tekens. 6 - 2 = 4.
- HERHALING("0"; 4) levert 0000. Met
A2erachter wordt dat 000082, precies 6 tekens. - Dan de naam, weer van binnen naar buiten. HERHALING(" "; 12) levert 12 spaties. B2 & die spaties is Brinkman BV met 12 spaties erachter: 11 + 12 = 23 tekens.
- LINKS(...; 12) houdt de eerste 12 van die 23 over: Brinkman BV plus 1 spatie. Eerst te veel spaties toevoegen en dan afknippen zorgt ervoor dat elke naam precies 12 tekens breed wordt.
- De twee delen gaan aan elkaar: 000082Brinkman BV met 1 spatie erachter, 6 + 12 = 18 tekens. =LENGTE(C2) bevestigt: 18.
Kopieer omlaag tot en met
C6:- in
C3telt Bakkerij Smit 13 tekens, LINKS houdt er 12 van over, en de regel wordt 004417Bakkerij Smi - in
C5is LENGTE(27) gelijk aan 2, dus het nummer wordt 000027, en Hendriks Groothandel (20 tekens) wordt ingekort tot Hendriks Gro - in
C6is LENGTE(950) gelijk aan 3, dus het nummer wordt 000950, en Mol & Zn (8 tekens) wordt met 4 spaties aangevuld tot 12: 000950Mol & Zn met 4 spaties erachter, 18 tekens, niets afgeknipt
De tool slikt alle regels, en de lange namen zijn ingekort zonder dat iemand een waarschuwing krijgt.
- in
Let op: Een factuurnummer van 7 cijfers, zoals 1234567, geeft 6 - 7 = -1, en HERHALING geeft #WAARDE!. Die fout zie je meteen; de stille fout is de afgekapte naam, zoals bij Hendriks Groothandel.
Meer over dit voorbeeld: waarom het werkt, nog 1 valkuil, 2 varianten
Waarom het werkt
Het nummer vul je links aan door uit te rekenen hoeveel nullen er ontbreken; de naam vul je rechts aan door er te veel spaties achter te zetten en met LINKS terug te knippen. Die tweede aanpak kan nooit een negatief aantal opleveren, en daarom gebruik je hem voor het deel dat te lang kan zijn. De eerste aanpak rekent erop dat het factuurnummer nooit meer dan 6 cijfers heeft.
Meer om op te letten
- Spaties aan het eind zie je in Excel niet, dus
C2lijkt op het scherm 17 tekens lang. Controleer de breedte met LENGTE en niet op het oog.
Varianten
=TEKST(A2,"000000") & LINKS(B2 & HERHALING(" ", 12), 12)
=TEKST(A2;"000000") & LINKS(B2 & HERHALING(" "; 12); 12)
Hier vult TEKST het nummer aan met een opmaakcode; een nummer van 7 cijfers komt er dan als 7 cijfers uit in plaats van als foutwaarde.
=RECHTS(HERHALING("0",6) & A2, 6) & LINKS(B2 & HERHALING(" ", 12), 12)
=RECHTS(HERHALING("0";6) & A2; 6) & LINKS(B2 & HERHALING(" "; 12); 12)
Overvullen en afknippen ook aan de linkerkant: nooit een foutwaarde, maar een nummer van 7 cijfers raakt ongemerkt zijn eerste cijfer kwijt.
ExpertExcel 2021 of nieuwer (Dit voorbeeld vereist Excel 2021 of nieuwer)
Een materialiteitsbalk die tegen overschrijdingen kan
In het controledossier laat je per controlegebied zien hoeveel van de uitvoeringsmaterialiteit al is opgebruikt door niet-gecorrigeerde afwijkingen: een balk van vaste breedte met gevulde en lege vakjes, met het percentage erachter. Een paar gebieden zitten boven de uitvoeringsmaterialiteit, en door een saldo van correctieboekingen is één gebied ooit onder nul gezakt. In geen van beide gevallen mag de balk stukgaan, en de breedte staat in een cel.
| Rij | A | B | C | D | E | F |
|---|---|---|---|---|---|---|
| 1 | Controlegebied | Deel van uitvoeringsmaterialiteit | Voortgang | Balkbreedte | ||
| 2 | Omzet | 62%62% | ▇▇▇▇▇▇░░░░ 62%=LET( gebruikt, B2, breedte, $E$2, gevuld, AFRONDEN(MIN(1, MAX(0, gebruikt)) * breedte, 0), HERHALING("▇", gevuld) & HERHALING("░", breedte - gevuld) & " " & TEKST(gebruikt, "0%") )=LET( gebruikt; B2; breedte; $E$2; gevuld; AFRONDEN(MIN(1; MAX(0; gebruikt)) * breedte; 0); HERHALING("▇"; gevuld) & HERHALING("░"; breedte - gevuld) & " " & TEKST(gebruikt; "0%") ) | 1010 | ||
| 3 | Personeelskosten | 115%115% | ||||
| 4 | Voorraad | 5%5% | ||||
| 5 | Debiteuren | -2%-2% | ||||
| 6 | Huisvestingskosten | 97%97% | ||||
| 7 |
Veeg opzij om alle kolommen te zien
Formule in C2
=LET( gebruikt,B2, breedte, $E$2, gevuld, AFRONDEN(MIN(1, MAX(0, gebruikt)) * breedte, 0), HERHALING("▇", gevuld) & HERHALING("░", breedte - gevuld) & " " & TEKST(gebruikt, "0%") )
=LET( gebruikt;B2; breedte; $E$2; gevuld; AFRONDEN(MIN(1; MAX(0; gebruikt)) * breedte; 0); HERHALING("▇"; gevuld) & HERHALING("░"; breedte - gevuld) & " " & TEKST(gebruikt; "0%") )
Resultaat: ▇▇▇▇▇▇░░░░ 62%
Stap voor stap
- LET geeft de invoer een naam: gebruikt is
B2, 0,62, en breedte isE2, 10. - gevuld wordt van binnen naar buiten berekend. MAX(0; 0,62) is 0,62; een negatieve waarde zou hier op 0 uitkomen. MIN(1; 0,62) is 0,62; een waarde boven 100% zou hier op 1 blijven steken. Dan 0,62 × 10 = 6,2, en AFRONDEN maakt daar 6 van.
- HERHALING("▇"; 6) tekent 6 gevulde blokjes, HERHALING("░"; 10 - 6) 4 lege. Samen zijn ze altijd precies breedte tekens lang.
- TEKST(0,62; "0%") levert 62%. Met de spatie ertussen toont
C2▇▇▇▇▇▇░░░░ 62%. C3(personeelskosten) laat zien waarom die begrenzing nodig is. 1,15 wordt teruggebracht tot 1, gevuld is 10, en het lege deel is HERHALING("░"; 0), lege tekst: ▇▇▇▇▇▇▇▇▇▇ 115%. Zonder MIN was gevuld AFRONDEN(11,5; 0) = 12, dan 10 - 12 = -2, en de tweede HERHALING gaf #WAARDE!.C5(debiteuren): -0,02 wordt opgehoogd tot 0, dus gevuld is 0 en de balk bestaat uit 10 lege vakjes met -2% erachter. Het label vertelt nog steeds hoe het zit, en de balk blijft tekenbaar.C4(voorraad): 0,05 × 10 = 0,5, afgerond 1 blokje.
Let op: De omgekeerde fout is MIN en MAX omdraaien: AFRONDEN(MAX(1; MIN(0; gebruikt)) * breedte; 0). MIN(0; 0,62) is 0, MAX(1; 0) is 1, dus elk controlegebied krijgt een volle balk. Als één gebied echt boven de uitvoeringsmaterialiteit zit, vallen die volle balken niet direct op en springt het gebied waar het om gaat er niet uit.
Meer over dit voorbeeld: waarom het werkt, nog 2 valkuilen, 1 variant
Waarom het werkt
Twee keer HERHALING met hetzelfde aantal tellen samen altijd op tot de volle breedte, dus in een lettertype met vaste breedte staan alle balken netjes onder elkaar. MIN en MAX houden het aantal binnen het enige bereik dat HERHALING kan tekenen, 0 tot en met breedte, terwijl het percentage in het label de echte waarde blijft tonen. Een negatief aantal geeft een fout, en een overschrijding in het gevulde deel levert een negatief aantal in het lege deel op; precies daar gaan zulke balken meestal stuk.
Voor dashboards met veel rijen die alleen op het scherm bekeken worden, is deze opbouw niet de beste keuze: gegevensbalken via voorwaardelijke opmaak schalen vloeiend, vragen geen speciaal lettertype en rekenen sneller. Daar staat tegenover dat je gegevensbalken niet als tekst naar een memo kunt kopiëren of met een label in één cel kunt zetten, en dat kan een balk met HERHALING wel.
Meer om op te letten
- De bloktekens komen uit Unicode. In sommige lettertypen zijn ░ en ▇ niet even breed, en dan staan de balken niet meer netjes onder elkaar. Zet de kolom in Consolas of een ander lettertype met vaste tekenbreedte.
- Is de breedte 0 of
E2leeg, dan krijg je balken van niets met alleen het percentage erachter. Dat is geen foutwaarde; verdwijnen alle balken tegelijk, kijk dan eerst naar de breedtecel.
Varianten
=HERHALING("▇",AFRONDEN(MIN(1, MAX(0, B2)) * $E$2, 0)) & HERHALING("░", $E$2 - AFRONDEN(MIN(1, MAX(0, B2)) * $E$2, 0))
=HERHALING("▇";AFRONDEN(MIN(1; MAX(0; B2)) * $E$2; 0)) & HERHALING("░"; $E$2 - AFRONDEN(MIN(1; MAX(0; B2)) * $E$2; 0))
Zonder LET en zonder label: werkt in elke versie, maar het begrensde aantal staat er twee keer in en wordt ook twee keer berekend.
Veelgemaakte fouten
| Symptoom | Oorzaak | Oplossing |
|---|---|---|
| Staven net korter dan de getallen | Bij een waarde van 8,7 verschijnen 8 blokjes, en de staven lijken net iets korter dan de getallen doen vermoeden. | HERHALING kapt af, dus rond het aantal af voordat HERHALING het ziet. |
| #WAARDE! op één aangevulde rij | Een aanvulformule als HERHALING("0"; 6 - LENGTE(A2)) & A2 geeft op één rij #WAARDE!. | Op die rij is de waarde langer dan 6 tekens, waardoor het aantal negatief werd. Bepaal wat er dan moet gebeuren (afkappen, markeren of breder maken) en zorg met MAX(0; ...) dat het aantal nooit onder 0 komt. |
| Staven staan niet netjes onder elkaar | De staven in een kolom staan niet netjes onder elkaar, en sommige lijken breder dan andere met hetzelfde aantal. | Hoe breed een teken is, hangt af van het lettertype. Zet kolommen met staven of aangevulde tekst in een lettertype waarin de bloktekens allemaal even breed zijn, zoals Consolas. |
Gebruikt in combinaties
- Een geplakte lijst splitsen en opschonen tot één kolomSplits een in één cel geplakte lijst factuurnummers op de komma's, haal de losse spaties weg met SPATIES.WISSEN en zet de stukjes met NAAR.KOLOM onder elkaar, klaar om te vergelijken.Excel 2024 of nieuwer (Deze combinatie vereist Excel 2024 of nieuwer)