Zoeken naar hoogste nummer met bepaalde beginletter in database

Status
Niet open voor verdere reacties.

ingding

Gebruiker
Lid geworden
30 mrt 2018
Berichten
19
Dag allemaal,

Ik heb een database met in kolom C een grote hoeveelheid "stuk"nummers onder verschillende vormen. Enkele vb'en: ZW-215, MAG-250, S-0051,...
Dagelijks vullen we de database aan met nieuwe stuknummers. Een nieuw stuknummer moet altijd volgen op het laatst gebruikte nummer S-nummer.

Als ik een macro 'sorteren' maak, dan verschijnen de S-nummers niet achteraan de database omdat de ZW-nummers later in het alfabet komen. Om te kijken wat het laatst gebruikte S-nummer is, moet er dus een heleboel scrollwerk gebeuren (wat niet handig is).

Ik dacht dus aan een macro dewelke een venster weergeeft waarin het hoogste S-waarde+1 weergegeven wordt. Zo weet de invoerder onmiddellijk welke nieuwe nummer hij moet gebruiken.

Hoop dat mijn uitleg duidelijk is :).
Bedankt alvast voor jullie hulp!
 
Je kan toch filteren? Plaats anders een voorbeeldbestand.
 
Dag VenA,

Zie vereenvoudigd bestand.
Telkens filteren zouden teveel handelingen zijn. Dan zou ik moeten filter en nadien sorteren.

Ik zou adhv een macro eenvoudig moeten kunnen achterhalen wat de laatst gebruikte S-nummer is.
 

Bijlagen

Zoiets?

Code:
Sub Spring_laatste_rij()
  ar = Cells(1).CurrentRegion.Columns(3)
    For j = 3 To UBound(ar)
      If LCase(Left(ar(j, 1), 1)) = "s" Then t = IIf(Split(ar(j, 1), "-")(1) > t, Split(ar(j, 1), "-")(1), t)
    Next j
  Application.Goto Cells(Rows.Count, 3).End(xlUp).Offset(1, 0), True
  ActiveCell.Value = "S-" & Format(t + 1, "0000")
End Sub
 
Dag VenA,

Heel erg bedankt! Is nog beter dan ik zocht :)...
 
Dat is toch niet zo'n moeilijke aanpassing?

Code:
Sub Spring_laatste_rij()
  ar = Cells(1).CurrentRegion.Columns(3)
    For j = 3 To UBound(ar)
      If LCase(Left(ar(j, 1), 1)) = "s" Then t = IIf(Split(ar(j, 1), "-")(1) > t, Split(ar(j, 1), "-")(1), t)
    Next j
    MsgBox "het laatst gebruikte nummer is:  S-" & t
End Sub
 
Voor de leesbaarheid werkt het niet prettig als je een bericht verwijdert en vervolgens een nieuw bericht plaatst. Je kan je eigen berichten aanpassen/aanvullen. Nu slaat mijn reactie in #6 nergens op terwijl het een oplossing is voor de vraag in het verwijderde bericht. Dat het beter is dan gezocht is mooi meegenomen.:)
 
Hallo,

Ik zit met een soortgelijk probleem als hierboven, maar krijg de VBA code niet aangepast zodat het werkt...
Zou een macro moeten hebben die net hetzelfde doet als hierboven (dus oplopende nummer) maar ditmaal beginnend met "AS-" ipv "S-" en in kolom 2 ipv kolom 3.

Dankjewel voor de hulp!
 
Hey VenA,

Ik heb de code van vorige keer proberen aan te passen (kolom 2 & AS- ipv S-)... Maar ik moet toegeven dat ik niet helemaal mee ben met deze code!

Sub Spring_laatste_rij()
ar = Cells(1).CurrentRegion.Columns(2)
For j = 3 To UBound(ar)
If LCase(Left(ar(j, 1), 1)) = "s" Then t = IIf(Split(ar(j, 1), "-")(1) > t, Split(ar(j, 1), "-")(1), t)
Next j
Application.Goto Cells(Rows.Count, 2).End(xlUp).Offset(1, 0), True
ActiveCell.Value = "AS-" & Format(t + 1, "0000")
End Sub

Als ik deze macro uitvoer dan krijg ik telkens opnieuw "AS-0001".
 
Maak svp gebruik van codetags.

Het antwoord staat toch al in #6? Kleine aanpassing:
Code:
 If LCase(Left(ar(j, 1), [COLOR="#FF0000"]2[/COLOR])) = "[COLOR="#FF0000"]a[/COLOR]s" Then t = IIf(Split(ar(j, 1), "-")(1) > t, Split(ar(j, 1), "-")(1), t)

En anders maar een voorbeeldbestandje plaatsen.
 
Hey VenA,

Sorry, het lukt me echt niet om de juiste code te vinden!
Net zoals bij mij vorige vraag zou ik een macro moeten hebben die het "AS"nummer met 1 optelt en weer plaatst in de laatste lege rij.

Dank voor de hulp...


Bekijk bijlage AS nummer.xlsm
 
Code:
Sub VenA()
  ar = Cells(1).CurrentRegion.Columns(2)
  For j = 2 To UBound(ar)
    If LCase(Left(ar(j, 1), 2)) = "as" Then t = IIf(Mid(ar(j, 1), 3) > t, Mid(ar(j, 1), 3), t)
  Next j
  Application.Goto Cells(Rows.Count, 2).End(xlUp).Offset(1, 0), True
  ActiveCell.Value = "AS" & Format(t + 1, "000")
End Sub
 
hou het simpul:

Code:
Sub M_snb()
   With Blad2.Cells(Rows.Count, 2).End(xlUp)
     .Offset(1) = Left(.Value, 2) & Val(Mid(.Value, 3)) + 1
    End With
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan