Répétition de valeurs - Microsoft Excel [fermé]

1

On me fournit une grande feuille de calcul mensuelle qui nécessite la saisie manuelle de 6 instances du même identifiant client. Je souhaite concevoir un code Macro ou VBA qui prendra ma liste de clients et créer une série de valeurs répétitives sur des lignes séparées. Par exemple, la colonne A contient actuellement les éléments suivants:

     A
1  Cust1
2  Cust2
3  Cust3

Mon VBA / Macro générerait la sortie suivante:

     A
1   Cust1
2   Cust1
3   Cust1
4   Cust1
5   Cust1
6   Cust1
7   Cust2
8   Cust2
9   Cust2
10  Cust2
11  Cust2
12  Cust2

Merci!

Ryan Wilson
la source
3
Bienvenue sur Super User. S'il vous plaît, n'hésitez pas à concevoir votre script / script. Lorsque vous avez terminé, revenez nous voir avec les problèmes que vous rencontrez. Nous ne sommes pas un service de rédaction de scripts. Nous nous attendons à ce que les utilisateurs nous disent ce qu’ils ont essayé jusqu’à présent (y compris les scripts qu’ils utilisent) et où ils sont bloqués afin que nous puissions résoudre des problèmes spécifiques. Les questions qui ne demandent que des scripts sont trop larges et risquent d'être suspendues ou fermées . S'il vous plaît lire Comment puis-je poser une bonne question? .
DavidPostill
1
Aussi, essayez de chercher sur ce site ( super utilisateur ). Excel est un sujet très populaire ici, et des questions similaires aux vôtres ont déjà été répondues.
Scott

Réponses:

0

Avec une macro utilisant VBA:

Public Sub customCustomers()
    Application.ScreenUpdating = False
    sourceSheet = "Sheet1"
    destSheet = "Sheet2"
    initialSrcRow = 1
    initialDstRow = 1
    times = 6
    Dim wkb As Workbook
    Dim wks, wks1 As Worksheet
    Set wkb = ThisWorkbook
    Set wks = wkb.Sheets(sourceSheet)
    Set wks1 = wkb.Sheets(destSheet)
    wks1.Rows.Clear
    seeking = True
    While seeking
        theCustomer = wks.Cells(initialSrcRow, 1)
        If theCustomer <> "" Then
            For i = 1 To times
                wks1.Cells(initialDstRow, 1) = theCustomer
                initialDstRow = initialDstRow + 1
            Next i
            initialSrcRow = initialSrcRow + 1
        Else
            seeking = False
        End If
    Wend
    Application.ScreenUpdating = True
    theMessage = MsgBox("Finished copying customers on Sheet: " & destSheet, vbOKOnly)
End Sub

Ouvrez VBA / Macros, sous ThisWorkbook, insérez un nouveau module et collez ce code sur le côté droit.

Vous pouvez ajuster les variables suivantes selon vos besoins:

  • sourceSheet: Le nom de la feuille d'origine, dans mon exemple est Sheet1 .

  • destSheet: Nom de la feuille de destination, dans mon exemple, est Sheet2 .

  • initialSrcRow : La première ligne de la feuille source.

  • initialDstRow: Première ligne de la feuille de destination.

  • times: Nombre de fois que le client doit être répété sur la feuille de destination.

jcbermu
la source