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

Gegevens herhalen...

Status
Niet open voor verdere reacties.

totallion

Gebruiker
Lid geworden
22 sep 2011
Berichten
7
Hallo allemaal,

Ik ben relatief nieuw met Excel en in verband met een conversie tussen 2 software pakketten loop ik tegen het volgend probleem aan,

Ik heb een lange lijst met klantnummers, deze klantnummers moeten vervolgens ieder in een opvolgende cel een landcode krijgen. De landcode bestaat telkens uit 8 verschillende landen.

Ik ben op zoek naar een formule of methode die uit blad 1 de klant 8x overneemt naar blad 3, kolom A en hier vervolgens in kolom B de 8 verschillende landcodes uit blad 2 automatisch aan toevoegt.
Dit uiteraard repeterend tot aan de laatste klant uit blad 1.

Is dit überhaupt mogelijk?
Zie ook meegestuurd voorbeeldbestand..

herhaling.jpg
 

Bijlagen

Een optie voor tabblad "resultaat":
Code:
A2: =INDIRECT("klant!A"&2+INTEGER((RIJ()-2)/8))
B2: =INDIRECT("landcode!A"&REST(RIJ()-2;8)+2)
Zie ook bijlage.
 

Bijlagen

Laatst bewerkt:
Of een niet volatiele formule
Code:
=INDEX(klant!$A$2:$A$17;1+INT((ROW()-2)/8))
=INDEX(landcode!$A$2:$A$9;MOD(ROW()-2;8)+1)

Of een macro
Code:
Sub VenA()
  ar = Sheets("klant").Cells(1).CurrentRegion
  ar1 = Sheets("landcode").Cells(1).CurrentRegion
  ReDim ar2(1, 0)
  For j = 2 To UBound(ar)
    For jj = 2 To UBound(ar1)
      ar2(0, UBound(ar2, 2)) = ar(j, 1)
      ar2(1, UBound(ar2, 2)) = ar1(jj, 1)
      ReDim Preserve ar2(1, UBound(ar2, 2) + 1)
    Next jj
  Next j
  Sheets("resultaat").Cells(2, 10).Resize(UBound(ar2, 2), 2) = Application.Transpose(ar2)
End Sub
 

Bijlagen

Deze wordt pas interessant bij meer data.
Zowel in beide bladen.

Code:
Sub hsv()
Dim sv, sv2, hs, i As Long, s0 As String
 sv = Sheets("klant").Cells(1).CurrentRegion
  sv2 =  Sheets("landcode").Cells(1).CurrentRegion.Offset(1).SpecialCells(2)
        For i = 2 To UBound(sv)
         s0 = s0 & Replace(String(UBound(sv2), " "), " ", " " & i)
        Next
     hs = Application.Transpose(Split(Trim(s0)))
   With Sheets("resultaat").Cells(2, 14)
    .Resize(UBound(hs)) = Application.Index(sv, hs, 0)
    .Offset(, 1).Resize(UBound(hs)) = Application.Transpose(Split(Replace(String(UBound(sv), " "), " ", Join(Application.Transpose(sv2)) & " ")))
  End With
End Sub
 
Laatst bewerkt:
In een specifieke cel te starten?

Hallo Harry,

Jou macro werkt voor dit doel ook perfect…
Maar is het op deze manier ook mogelijk om in een specifieke cel te starten?
Ik zou bijvoorbeeld mijn klantnummering in het resultaat tab op locatie A10 willen starten en de landencode op E10?

Ik heb wederom een voorbeeldbestand bijgesloten.

herhaling2.jpg
 

Bijlagen

Dat is maar een kleine aanpassing.

Code:
Sub hsv()
Dim sv, sv2, hs, i As Long, s0 As String
 sv = Sheets("klant").Cells(1).CurrentRegion
  sv2 = Sheets("landcode").Cells(1).CurrentRegion.Offset(1).SpecialCells(2)
        For i = 2 To UBound(sv)
         s0 = s0 & Replace(String(UBound(sv2), " "), " ", " " & i)
        Next
     hs = Application.Transpose(Split(Trim(s0)))
   With Sheets("resultaat").Cells([COLOR="#FF0000"]10, 1[/COLOR])
    .Resize(UBound(hs)) = Application.Index(sv, hs, 0)
    .Offset(,[COLOR="#FF0000"] 4[/COLOR]).Resize(UBound(hs)) = Application.Transpose(Split(Replace(String(UBound(sv), " "), " ", Join(Application.Transpose(sv2)) & " ")))
  End With
End Sub

Nb. Als je macro's gebruikt dan moet je het bestand opslaan als .xlsm of .xlsb anders ben je de macro kwijt.
 
Hallo Harry,

Helemaal top, het werkt!
En ja, ik wist dat ik het bestand in de extensie .xlsm moest opslaan om de macro te behouden, maar daar houd mijn kennis van dit geweldige programma (zeker op dit gebied) dan ook al gauw op...

Ik wens je een fantastisch weekend!
Groet,
Jaap
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan