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

Nummers generen met letter

Status
Niet open voor verdere reacties.

MrSpock

Gebruiker
Lid geworden
1 nov 2022
Berichten
19
Geachte Heren

Ik had de volgende vraag
Ik wil graag een excel maken waarin ik bijvoorbeeld in cel A1 begin met het getal 92000A dan zou dit tot 92999A moeten doorlopen
Hierna zou het getal gewoon door moeten lopen dus 93000 maar dan met de letter B tot 93999B
enzovoort tot de letter Z en dan weer beginnen met A
Hiermee moet ik 400000 unieke code's voor labels uitwerken, en zoals jullie begrijpen 400000 nummers door trekken word hem niet helemaal.
Is dit te automatiseren ?
 
Zoiets?
Code:
Sub MaakLabels()
    x = 1
    Letter = 65
    Application.ScreenUpdating = False
    For i = 92000 To 400000
        Cells(x, 1) = i & Chr(Letter)
        If Right(i, 3) = "999" Or Right(i, 4) = "9999" Then
            Letter = IIf(Chr(Letter) = "Z", 65, Letter + 1)
        End If
        x = x + 1
    Next i
    Application.ScreenUpdating = True
End Sub
 

Bijlagen

Laatst bewerkt:
"Geachte Heren"

Helpmij.nl is niet voorbehouden aan Heren!
 
Of zo:

Code:
Sub M_snb()
  cells(1).resize(4*10^5 +1) = [index(row(92000:492000) & char(65+mod(int((row(1:400000)-1)/1000),26)),)]
End Sub
 
Ziet er indrukwekkend uit, maar:
Foutje.png

Doe ik iets niet goed?
 
Ik heb de code in #4 in dit forum geselecteerd en gekopieerd in de macromodule van het werkblad in een nieuw Excelbestand.
Daarna uitgevoerd: vlekkeling.

Je hebt het toch niet in een Worddocument gedaan ?
 
Uiteraard niet.
Gewoon in Excel.
De regel is bij mij na het plakken direct rood.
De compiler geeft dan de getoonde melding.
 
Kan ik hier niet reproduceren.
 

Bijlagen

Laatst bewerkt:
Dat gaat inderdaad goed.
Het verschil zit 'm in de spaties:
Code:
Sub M_snb()
  Cells(1).Resize(4 * 10 ^ 5 + 1) = [index(row(92000:492000) & char(65+mod(int((row(1:400000)-1)/1000),26)),)]
[COLOR="#FF0000"]  cells(1).resize(4*10^5 +1) = [index(row(92000:492000) & char(65+mod(int((row(1:400000)-1)/1000),26)),)][/COLOR]
End Sub

In ieder geval een mooie oplossing :thumb:
 
Laatst bewerkt:
Je kon het inderdaad al zien aan de afstanden tussen de 'resize' elementen.
Eigenlijk is het een toepassing van wat vroeger bij algebra op de middelbare school als 'reeksen' werd aangeleerd.
 
Laatst bewerkt:
Dat was aan mij destijds niet besteed ;)
 
Hier nog een Excel 365 formule om de gewenste lijst te genereren:
Code:
=LET(r;REEKS(400000;;92000);s;SCAN(0;REST(r;1000)=0;LAMBDA(x;y;ALS(SOM(x;y)>26;1;SOM(x;y))));r&TEKEN(64+s))
 
Laatst bewerkt:
Hier een Excelversie-onafhankelijke formule:

in A1:

Code:
=92000 +ROW(A1)-1 & CHAR(65+MOD(INT((ROW(A1)-1)/10^3);26))

doortrekken naar beneden
 
Laatst bewerkt:
Mooie oplossingen.
Als MrSpock het allemaal nog maar logical vind ;)
 
Hallo Excel guru's (is dit beter Senso :D)

Ik ben voor de elegante oplossing gegaan van SNB
Nu nog aan button hangen en een invoer veld met welk nr. de reeks moet beginnen.
Maar dat puzzel ik zelf wel uit, moet het ook zelf leren
Nogmaals bedankt
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan