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

Tel het aantal rijen die aan criteria voldoen tot bepaalde waarde is bereikt

Status
Niet open voor verdere reacties.

Luuk12345

Gebruiker
Lid geworden
10 aug 2008
Berichten
323
Hallo allen,

Via deze weg probeer ik jullie hulp weer in te schakelen, alvast dank daarvoor.

Ik zit met de volgende uitdaging:
In Sheet1 staan artikelnummers met elk een afzonderlijke behoefte. In Sheet2 staat een voorraadlijst van deze artikelen en hoeveel er van elk op welke locatie aanwezig is. Het is uiteindelijk de bedoeling dat in Sheet3 net zoveel regels uit de voorraadlijst worden geplakt totdat aan de behoefte van een artikel is voldaan.

Als voorbeeld: nummer 12345678 heeft een behoefte van 95.000. Hiervan zijn op 6 locaties voorraden aanwezig. Door het verzamelen van de voorraad van de eerste 5 locaties is aan de behoefte voldaan. De informatie uit deze 5 regels moet gekopieerd worden in een aparte sheet. En zo verder voor het volgende materiaal, totdat genoeg locaties bekend zijn zodat aan de behoefte van alle materialen is voldaan (zonder de extra overbodige locaties).

Wellicht dat jullie mij hiermee kunnen helpen. Mag ook in VBA zijn.

Alvast hartelijk dank!

Groet,
Luuk

Bekijk bijlage Voorbeeld.xlsx
 
Laatst bewerkt:
er staat een tegenstrijdigheid in uw vraag.

er moet maar gezocht worden tot het getal is bereikt en verder moeten alle locaties bekend zijn.
 
Ik tel er maar 94000 terwijl je 95000 nodig hebt; waarom 8D dan niet?
 
Test het eens.
Code:
Sub hsv()
Dim sv, sv_2, i As Long, ii As Long, tel As Double
sv = Sheets("stock").Cells(1).CurrentRegion
sv_2 = Sheets("benodigd").Cells(1).CurrentRegion
With CreateObject("scripting.dictionary")
   For ii = 2 To UBound(sv_2)
      For i = 2 To UBound(sv)
        If sv(i, 1) = sv_2(ii, 1) Then
           If tel < sv_2(ii, 2) Then
              tel = tel + sv(i, 3)
             .Item(Join(Application.Index(sv, i, 0))) = Application.Index(sv, i, 0)
           End If
        End If
      Next i
     tel = 0
   Next ii
  Sheets("hier de regels").Cells(1, 10).Resize(.Count, 4) = Application.Index(.items, 0, 0)
  End With
End Sub
 
Dag Harry,

Fantastisch, goed werk! Het werkt. Ik heb de code wat aangepast zodat het onderstaande nieuwe voorbeeld ook werkt. Het scenario is nu wat uitgebreider (hiervoor heb ik nog geen code). De volgende drie toevoegingen zou ik er graag bij willen:
- Er is een tweede stock lijst toegevoegd (stock2). Indien er in stock1 niet voldoende staat om aan de behoefte te voldoen, moet er gekeken worden of er voorraad is in stock2 > zo ja, deze regel(s) ook kopiëren naar 'hier de regels' (ook al wordt alsnog niet aan de behoefte voldaan).
- Indien er niet aan de behoefte kan worden voldaan door de voorraden in stock 1 + stock 2, dan markeer de regel van het betreffende nummer rood in de sheet 'Benodigd'. Wordt er wel aan de behoefte voldaan > markeer de regel groen.
- Een van de gegevens die gekopieerd wordt naar de sheet 'hier de regels' is een 18-cijferig nummer. Dit wordt weergegeven als 1,23457E+17. Hoe zorg ik er voor dat het volledige nummer wordt weergegeven?

Alvast bedankt!
Bekijk bijlage Voorbeeld.xlsm
 
Laatst bewerkt:
Excel kent getallen van maximaal 15 cijfers.
Plaats dat getal dus als tekst.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan