Tekst in een cellen opsplitsen in gemeenschappelijke tekst

Status
Niet open voor verdere reacties.

Willemvk1975

Gebruiker
Lid geworden
13 sep 2017
Berichten
15
Hallo,

Ik ben bezig met een prijslijst te maken van een regiment artikelen. Er zijn meerdere artikelen die onder 1 familie vallen. De familie is te herkennen aan het eerste deel van het artikelnummer.

Artikelcode - Naam
1111.0500.P – Verf een basis P 5 liter
1111.0250.TR – Verf een basis TR 2,5 liter
1111.0100.D – Verf een basis D 1 liter

Zijn allemaal artikelen van dezelfde familie, “Verf een”.

De namen echter zijn zoals ik ze in het voorbeeld heb geplaatst. Per artikelcode één cel met de volledige omschrijving.

Ik ben opzoek naar een manier om de familie naam te isoleren.

  • Per familie zijn er niet een constant aantal artikelcodes.
  • De familienaam is niet een constant aantal woorden. Dit kan variëren.


Hoe krijg ik dit voor elkaar zonder dat ik dit handmatig moet doen?
 

Bijlagen

  • Voorbeeldprijslijst.xlsx
    10 KB · Weergaven: 26
Op zijn minst heb je een tabel nodig met daarin de productnamen en de productcodes, want daarmee kun je in de productbeschrijvingen gaan zoeken.
 
Het deel van de artikelcode isoleren wat nodig is, is eenvoudig.

Met de formule Links(1111.0500.P; 4) blijft 1111 over, wat het deel van de artikelcode is wat het product aangeeft.

Het probleem is dan nog om dat deel van de naam te isoleren wat gemeenschappelijk is voor alle rijen die met 1111 beginnen.
 
Zo? Of is dit te simpel gedacht?
 

Bijlagen

  • Voorbeeldprijslijst.xlsb
    9,9 KB · Weergaven: 33
VenA

Helaas is dat te simpel gedacht, maar ligt niet aan jouw.

Mijn voorbeeld was te simpel opgezet. In plaats van 'Basis', kunnen er nog een tiental andere woorden of nummers het eerste woord na de familie naam zijn.
Blijkt niet uit mijn voorbeeld. Sorry.
 
Je kan beter een complexer voorbeeld maken zodat het duidelijk wordt waarop gesplitst kan worden.
 
Per linkerdeel van het artikelnummer (1111.0100.P wordt 1111) moet gekeken worden welke woorden voor elk apart artikel overeenkomen.

Als bij 4 artikelnummers startend met 1111 de namen als volgt zijn:


  • Artikelnummer - Naam
    1111(.0100.P) - A B C D
    1111 - A B C E F G H
    1111 - A B C D F
    1111 - A B C F E

Dan is bij elk artikelnummer de naam: A B C gemeenschappelijk.

Als bij een ander artikelnummer de eerste 2 woorden gemeenschappelijk zijn, wil ik de eerste 2 woorden overhouden.
Als bij nog een ander artikelnummer de eerste 5 woorden gemeenschappelijk zijn, wil ik de eerste 5 woorden overhouden.
 
Als het scheidingsteken altijd een spatie is dan kan je deze macro eens proberen.

De artikellijst moet wel in Sheet1!A1 beginnen.
Code:
Sub VenA()
  ar = Sheet1.Cells(1).CurrentRegion
  With CreateObject("scripting.Dictionary")
    For j = 2 To UBound(ar)
      If Not .Exists(Left(ar(j, 1), 4)) Then
       .Item(Left(ar(j, 1), 4)) = ar(j, 2)
       Else
       c00 = ""
        For jj = 0 To UBound(Split(.Item(Left(ar(j, 1), 4))))
          If Split(.Item(Left(ar(j, 1), 4)))(jj) = Split(ar(j, 2))(jj) Then c00 = c00 & " " & Split(ar(j, 2))(jj) Else Exit For
        Next jj
        .Item(Left(ar(j, 1), 4)) = Mid(c00, 2)
      End If
    Next j
    Sheet1.Cells(1, 10).Resize(.Count, 2) = Application.Transpose(Array(.keys, .items))
  End With
End Sub
 

Bijlagen

  • Voorbeeldprijslijst1.xlsb
    19,7 KB · Weergaven: 33
VenA

Het werkt als een tierelier in jou meegestuurde voorbeeld. En inderdaad, het scheidingsteken is altijd een spatie.
Maandag ga ik het op het werk uitproberen met de prijslijst, maar ik ga er vanuit dat het daar ook zal werken.

Al zal het mij nog wel enige studie kosten om te snappen wat er nou precies gebeurt.

Bedankt!!!
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan