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

Optellingen

Status
Niet open voor verdere reacties.

B767300ER

Gebruiker
Lid geworden
28 apr 2015
Berichten
46
Hallo Allemaal

Na hier eerder al super te zijn geholpen heb ik een volgend probleem.
Uit een database krijg ik elke dag een excelbestand zoals in de bijlage.
In de kolom A staat een soort van artikelnummer, in kolom B een aantal.
Nu komen in de hele lijst de artikelnummers meerdere keren voor.

Als voorbeeld: artikelnummer 1020018 staat in kolom A op zowel rij 1,286,287,288,299,300,301;422,423,424,425,426,500 en 552, met daarachter een wisselend aantal. De rij verschilt per dag, dus de volgende keer zou het rustig rij 10,97,98,122,324,456,556,557,559,612 en 615 kunnen zijn.ook de aantallen verschillen per dag

Hoe kan ik zorgen dat hij in het tweede tabblad de aantallen in kolom B behorend bij artikelnummer 1020018 bij elkaaroptelt.
in het voorbeeld dus de celwaarden van B1, B286,B287,B288,B299,B300,B301;b422,B423,B424,B425,B426,B500 en B552, maar de volgende keer zijn dat dus weer andere cellen.

Ik wil dus in tabblad 2 alle artikelnummers onder elkaar in kolom A en ernaast in Kolom B de som van de aantallen welke in tabblad 1 staan.
Voorbeeld van hoe ik het wil staat op tabblad 3, maar dit moet dan natuurlijk wel automatisch kunnen :)
 

Bijlagen

Laatst bewerkt:
De uitkomst komt in blad 3 na het draaien van onderstaande macro.
Code:
Sub hsv()
Dim sn, i As Long
sn = Sheets("blad1").Cells(1).CurrentRegion
With CreateObject("scripting.dictionary")
  For i = 2 To UBound(sn)
       .Item(sn(i, 1)) = .Item(sn(i, 1)) + sn(i, 2)
   Next i
Sheets("blad3").Cells(1).Resize(.Count, 2) = Application.Transpose(Array(.keys, .items))
End With
End Sub
 
Dit is helemaal Top, dank tot zover!!

kan het ook zonder macro?
Is het ook mogelijk om de uitkomst opvolgorde van artikelnummer te laten sorteren in dezelfde macro?

nogmaals enorm Bedankt to zover!
 
Laatst bewerkt:
zonder VBA zou je dit ook met een draaitabel kunnen maar het ligt er een beetje aan hoe je de data binnenkrijgt.. hoe simpel het is..
maar zelfs als je elke dag een draaitabel zou moeten maken is het maar een minuutje werk of zo..

Bekijk bijlage Kopie van 2a.xlsx

de sortering kan je in een draaitabel ook.

een andere optie is met sommen.als() formules alleen heb je dan een vaste lijst artikelen nodig, maar dat heeft als voordeel dat je ook artikelen ziet die 0 voorraad hebben.
 
Thnks, de bedoeling is eigenlijk dat het vol autoamtisch gaat.
ik krijg de lijst binnen zoals in de bijlage is aangegeven.
 
Gesorteerd.
Code:
Sub hsv()
Dim sn, i As Long, Odic As Object
sn = Sheets("blad1").Cells(1).CurrentRegion
Set Odic = CreateObject("scripting.dictionary")
  For i = 2 To UBound(sn)
       Odic.Item(sn(i, 1)) = Odic.Item(sn(i, 1)) + sn(i, 2)
   Next i
With Sheets("blad3").Cells(1)
 .Resize(.Count, 2) = Application.Transpose(Array(Odic.keys, Odic.items))
 .CurrentRegion.Sort [a1]
 End With
End Sub
 
Helaas, als hij hem doorloopt geeft hij bij het sorteren een foutmelding.

"De sorteersleutel is ongeldig, controleer of de sleutel binnen de gegevens ligt die u wilt sorteren en of het eerste vak sorteren op niet hetzelfde of leeg is"

Heb je daar ook een oplossing voor? En zo ja, welke :) Hoor graag van je!
 
Zie blauwe tekst.
Code:
Sub hsv()
Dim sn, i As Long, Odic As Object
sn = Sheets("blad1").Cells(1).CurrentRegion
Set Odic = CreateObject("scripting.dictionary")
  For i = 2 To UBound(sn)
       Odic.Item(sn(i, 1)) = Odic.Item(sn(i, 1)) + sn(i, 2)
   Next i
With Sheets("blad3").Cells(1)
 .Resize([COLOR=#0000ff]odic[/COLOR].Count, 2) = Application.Transpose(Array(Odic.keys, Odic.items))
 .CurrentRegion.Sort [a1]
 End With
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan