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

Lastige vraag, problemen met import sheet,

Status
Niet open voor verdere reacties.

dannydko

Gebruiker
Lid geworden
11 nov 2013
Berichten
23
Hallo Allen,

Ik heb weer eens jullie hulp nodig,

Ik heb het volgende probleem

Ik heb van 1 van mijn leveranciers een import sheet ontvangen met meer als 5000 producten.
Deze wil ik plaatsen op mijn webshop.
Echter loop ik tegen 1 Major probleem aan.

de meeste artikelnummers zijn bruikbaar voor meerdere motoren maar opgesomd onder 1 artikelnummer.
Deze wil ik graag apart kunnen sorteren. ( ik heb een voorbeeld bestand toegevoegd.

Kunnen jullie mij hierbij helpen, in CEL F staan de types waarvoor nieuwe regels aangemaakt dienen te worden. Echter dient de overige inhoud hetzelfde te blijven incl het artikelnummer.

Bekijk bijlage Voorbeel vraag helpmij forum.xlsxBekijk bijlage Voorbeel vraag helpmij forum.xlsx

Alvast bedankt voor jullie hulp!

Groet Danny
 
Beste,

Ik had nog een voorbeeld van een eigen gedefiniëerde functie om delen van gegevens op te vragen wanneer 2 gegevens in dezelfde cel staan. Ik heb dit toegepast in het voorbeeld in bijlage in de veronderstelling dat de gegevens gescheiden zijn door een komma.
 

Bijlagen

En gaat dat in kolom F altijd om 1 of 2 artikelen of kunnen dat er meer zijn?
 
dat kunnen er max 6 zijn! Tkint ik ga je voorbeeld als ik thuis ben direct bekijken
 
Beste,

Indien er meer dan 2 gegevens zijn, zal alleen de eerste functie correct zijn. Er wordt voor het tweede deel gekeken vanaf de komma tot het einde.
 
@pixcel,

Krachtige tool maar niet standaard in het menu?
 
Kan je even wat meer regels in jouw bestand zetten?

@tkint, Volgens mij is dit voldoende om de eerste, tweede. etc uit een komma gescheiden string te halen.

Code:
Function VenA(r As Range, i As Integer)
On Error GoTo Eind
    VenA = Split(r.Value, ",")(i - 1)
Eind:
End Function

@pixcel, Leuke tip voor thuisgebruik of in een selecte groep van gebruikers. (in de praktijk bedrijfsmatig nutteloos):confused:
 
Leuke tip voor thuisgebruik of in een selecte groep van gebruikers. (in de praktijk bedrijfsmatig nutteloos):confused:

Zeker niet nutteloos, maar wel voor een selecte groep rapport ontwikkelaars en niet voor de gemiddelde eind gebruiker.
 
@VenA

Ik had dat zelf nooit kunnen bedenken. Dat is nu het verschil tussen een prof en een amateur. Maar ik kan die formule niet doorslepen. Klopt dat?
 
De formule kan je doorslepen. Zie vb.

Beste VenA,

Dit ziet er goed uit, excuses voor mijn late reactie (soms heb je dat)

Zou je wat meer uitleg kunnen geven over hoe je dit voor elkaar hebt gekregen.

Welke formule is er exact toegepast en op welke wijze kopieer je de formule door in het rest van het bestand.

Het gaat totaal om zon 1000 regels waarbij ik deze formule dien toe te passen, ik wil mezelf daarbij goed kunnen controlen.

Ik hoor het graag,

Alvast bedankt!

Groet,

Danny
 
De formule kan je doorslepen. Zie vb.

Ik heb geprobeerd de formule door te slepen echter lukt mij dit persoonlijk niet, ik wacht even af op je antwoord :) Zou top zijn als dit gaat lukken want hier kan ik letterlijk weken werk mee besparen. Echter is het wel de bedoeling dat de volledige regel wordt door gekopieerd. Het artikelnummer moet daarbij hetzelfde blijven.
 
Laatst bewerkt:
Je kan deze eens testen. Waarbij je moet zorgen dat de gegevens in een aaneengesloten bereik vanaf A1 staan en dat het type in kolom F staat.

Code:
Sub VenA()
ar = Blad1.Cells(1).CurrentRegion
ReDim ar1(UBound(ar) * 6, 1 To UBound(ar, 2))
For j = 1 To UBound(ar)
    For jj = 0 To Len(ar(j, 6)) - Len(Replace(ar(j, 6), ",", ""))
        For jjj = 1 To UBound(ar, 2)
            ar1(t, jjj) = ar(j, jjj)
        Next jjj
        ar1(t, 6) = Split(ar(j, 6), ",")(jj)
        t = t + 1
    Next jj
Next j
Blad3.Cells(1).Resize(UBound(ar1) + 1, UBound(ar1, 2)) = ar1
End Sub

Met <Alt> + <F8> kan je de macro starten. Het resultaat wordt weggeschreven in blad3
 

Bijlagen

Je kan deze eens testen. Waarbij je moet zorgen dat de gegevens in een aaneengesloten bereik vanaf A1 staan en dat het type in kolom F staat.

Code:
Sub VenA()
ar = Blad1.Cells(1).CurrentRegion
ReDim ar1(UBound(ar) * 6, 1 To UBound(ar, 2))
For j = 1 To UBound(ar)
    For jj = 0 To Len(ar(j, 6)) - Len(Replace(ar(j, 6), ",", ""))
        For jjj = 1 To UBound(ar, 2)
            ar1(t, jjj) = ar(j, jjj)
        Next jjj
        ar1(t, 6) = Split(ar(j, 6), ",")(jj)
        t = t + 1
    Next jj
Next j
Blad3.Cells(1).Resize(UBound(ar1) + 1, UBound(ar1, 2)) = ar1
End Sub

Met <Alt> + <F8> kan je de macro starten. Het resultaat wordt weggeschreven in blad3

WAUW!, dit is echt helemaal super!, helemaal wat ik zocht !, dit gaat echt weken werk schelen!, ontzettend bedankt!
 
Je kan deze eens testen. Waarbij je moet zorgen dat de gegevens in een aaneengesloten bereik vanaf A1 staan en dat het type in kolom F staat.

Code:
Sub VenA()
ar = Blad1.Cells(1).CurrentRegion
ReDim ar1(UBound(ar) * 6, 1 To UBound(ar, 2))
For j = 1 To UBound(ar)
    For jj = 0 To Len(ar(j, 6)) - Len(Replace(ar(j, 6), ",", ""))
        For jjj = 1 To UBound(ar, 2)
            ar1(t, jjj) = ar(j, jjj)
        Next jjj
        ar1(t, 6) = Split(ar(j, 6), ",")(jj)
        t = t + 1
    Next jj
Next j
Blad3.Cells(1).Resize(UBound(ar1) + 1, UBound(ar1, 2)) = ar1
End Sub

Met <Alt> + <F8> kan je de macro starten. Het resultaat wordt weggeschreven in blad3

Aangezien het om een groot product assortiment gaat, denk je dat het nodig is om er een controle formule in te maken ? bijvoorbeeld als ik deze macro over 5000 producten laat lopen krijg ik een totaal van ongveer 10 000 producten. Hiervan zal ik er zon 5000 gaan gebruiken, aangezien er prijzen aan vast zitten zoek ik een controle functie zodat ik 100 % zeker weet dat alles overeen komt met de basis. denk je dat dit noodzakelijk is? oftewel is de formule 100 % betrouwbaar ?
 
Stop eerst een met het onnodig quoten.
Het is geen formule maar een stukje programmacode en de betrouwbaarheid is geheel afhankelijk van jouw input. Daar kan ik obv van één regel in het voorbeeldbestandje geen enkel oordeel over geven.

De code splitst het type als er een "," gevonden wordt in kolom F en dit net zolang tot er geen "," gevonden wordt. Dus als het type 'omschrijving1' is zal er één regel gemaakt worden. Als het type 'omschrijving1,omschrijving2' is worden er twee regels aangemaakt. Als het type ',,,,,,,,,,' is worden er 11 regels aangemaakt.
 
Bedankt

Goedemorgen,

Doormiddel van jullie antwoorden is mijn probleem opgelost.

Bedankt voor jullie input.

Ik zet er een slotje op!

Groet

Danny
 
Alternatief:

Code:
Sub M_snb()
   sn = Blad1.Cells(1).CurrentRegion
   
   For j = 1 To UBound(sn)
     c00 = c00 & Replace(String(Len(sn(j, 6)) - Len(Replace(sn(j, 6), ",", "")) + 1, "~"), "~", j & " ")
   Next
   sp = Application.Index(sn, Application.Transpose(Split(Trim(c00))), [transpose(row(1:9))])
   
   For j = 2 To UBound(sp)
      If InStr(sp(j, 6), sp(j - 1, 6)) = 0 Then
         sp(j, 6) = Split(sp(j, 6), ",")(0)
      Else
         sp(j, 6) = Split(Split(sp(j, 6), sp(j - 1, 6))(1), ",")(1)
      End If
   Next
   
   Blad2.Cells(1).Resize(UBound(sp), UBound(sp, 2)) = sp
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan