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

posities van component op 1 lijn

Status
Niet open voor verdere reacties.

Spiesse

Gebruiker
Lid geworden
14 jul 2011
Berichten
902
voor een offerte dient een collega het volgende te verwezenlijken:

in een tabel heeft hij een overzicht van 1902 plaatsen op een printplaat waar een component moet komen. (in bijlage een verkorte tabel).

nu wil hij per benodigd component in de cel ernaast (de unieke componenten zou ik bekomen via een draaitabel) alle plaatsen willen zien waarop dit bepaald component moet komen, gescheiden door een komma...

Ik vermoed dat een macro hiervoor het best op zijn plaats is...

zie bijlage voor het bestand.
Bekijk bijlage balancer.xlsx

alvast bedankt!
Spiesse
 
Met een macro filter
 

Bijlagen

  • balancer(jp).xls
    52 KB · Weergaven: 16
Code:
Sub M_snb()
   Cells(2, 7) = Join(Filter([transpose(If(B1:B2000=F2,A1:A2000,"~"))], "~", False), ",")
   Cells(3, 7) = Join(Filter([transpose(If(B1:B2000=F3,A1:A2000,"~"))], "~", False), ",")
End Sub
 
Laatst bewerkt:
Nog maar eentje zonder gebruik van de draaitabel.
Code:
Sub hsv()
Dim dic As Object, Odic As Object, cl
Set dic = CreateObject("scripting.dictionary")
Set Odic = CreateObject("scripting.dictionary")
   For Each cl In Worksheets(1).ListObjects(1).ListColumns(2).DataBodyRange
     dic(cl.Value) = dic(cl.Value)
     Odic(cl.Value) = Odic(cl.Value) & cl.Offset(, -1).Value & ", "
   Next cl
 Range("J1").Resize(dic.Count) = Application.Transpose(dic.keys)
 Range("K1").Resize(Odic.Count) = Application.Transpose(Split(Join(Odic.items, vbLf), vbLf))
End Sub
 
Code:
Sub M_snb()
   Cells(2, 7) = Join(Filter([transpose(If(B1:B2000=F2,A1:A2000,"~"))], "~", False), ",")
   Cells(3, 7) = Join(Filter([transpose(If(B1:B2000=F3,A1:A2000,"~"))], "~", False), ",")
End Sub

Hey SNB,

als ik uw macro doe lopen, zie ik op beide regels allemaal 0 (nullen) met een komma gescheiden... opzet is dus ok, enkel de locatie er nog bijkrijgen...
 
Nog maar eentje zonder gebruik van de draaitabel.
Code:
Sub hsv()
Dim dic As Object, Odic As Object, cl
Set dic = CreateObject("scripting.dictionary")
Set Odic = CreateObject("scripting.dictionary")
   For Each cl In Worksheets(1).ListObjects(1).ListColumns(2).DataBodyRange
     dic(cl.Value) = dic(cl.Value)
     Odic(cl.Value) = Odic(cl.Value) & cl.Offset(, -1).Value & ", "
   Next cl
 Range("J1").Resize(dic.Count) = Application.Transpose(dic.keys)
 Range("K1").Resize(Odic.Count) = Application.Transpose(Split(Join(Odic.items, vbLf), vbLf))
End Sub

HSV, denk dat deze het doet!

thx
Spiesse
 
Dan heb je de code in een ander bestand gezet dan het bestand dat je hier geplaatst hebt.

Je moet de code dan natuurlijk wel aanpassen.
 

Bijlagen

  • __balancer snb.xlsb
    17,8 KB · Weergaven: 16
snb,

tuurlijk... man man, goe bezig ikke :)
sorry voor het twijfelen aan jouw kunnen :)

heb je mss de uitbreiding ook in jouw vingers zitten? Namelijk dat ik kan zien hoeveel plaatsen per component bezet zijn adhv het aantal komma's die gebruikt worden ...
 
wat dacht je van

Code:
Sub M_snb()
   Cells(2, 8) = ubound(Filter([transpose(If(B1:B2000=F2,A1:A2000,"~"))], "~", False))+1
   Cells(3, 8) = ubound(Filter([transpose(If(B1:B2000=F3,A1:A2000,"~"))], "~", False))+1
End Sub[

maar naruulijk veel simpeler met aantal.als(B1:B2000;F2)
 
Laatst bewerkt:
bedankt snb,

bestand is aangepast en goedgekeurd.

Dank aan allen voor de hulp!

Deze gaat op opgelost

Groeten en tot het volgend draadje
Spiesse
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan