-1
votes

Tout code VBA éventuel pour doubler des noms de numéros de choix et séquentiellement dans Excel?

Y a-t-il une possibilité possible de prendre une liste d'éléments ou de noms, tels que:

Apples1
Apples2
Oranges1
Oranges2
Grapes1
Grapes2
Watermelons1
Watermelons2


2 commentaires

Ce sera = "pommes" + si (compometif (A1: A100, "Pommes") <= 1, "", Countif (A1: A100, "Pommes"))


Dupliqué possible de Existe-t-il un moyen d'effectuer une jointure croisée ou un produit cartésien dans Excel?


3 Réponses :


2
votes

Comme il semble que cela soit nécessaire d'avoir une approche plus dynamique, essayez ceci. La fonction DoubleLeames va renvoyer les noms dupliqués N Nombre de temps spécifiés dans le paramètre DuplicateCount. Il retournera une collection, que vous pouvez facilement jeter à une plage si nécessaire.

Public Function DoubleNames(ByVal DataRange As Excel.Range, DuplicateCount As Long) As Collection
    Set DoubleNames = New Collection
    Dim dict     As Object: Set dict = CreateObject("Scripting.Dictionary")
    Dim i        As Long
    Dim DataItem As Excel.Range
    Set DataRange = DataRange.SpecialCells(xlCellTypeConstants)

    For Each DataItem In DataRange
        For i = 1 To DuplicateCount
            If Not dict.Exists(DataItem.Value) Then
                DoubleNames.Add (DataItem.Value & "1")
                dict.Add DataItem.Value, 1
            Else
                dict(DataItem.Value) = dict(DataItem.Value) + 1
                DoubleNames.Add (DataItem.Value & dict(DataItem.Value))
            End If
        Next
    Next
End Function

Sub ExampleUsage()
    Dim item As Variant
    Dim rng As Range: Set rng = ThisWorkbook.Sheets("Sheet1").Range("A1:A5")
    For Each item In DoubleNames(rng, 5)
        Debug.Print item
    Next
End Sub


3 commentaires

Si vous avez utilisé un dictionnaire au lieu de la collection, la sortie ne nécessiterait pas de boucle, vous pouvez faire une plage ("A1"). Redimensionner (dicvalues.count-1,1) .value = dicvalues.item s ( )


Nous avons environ 75 mille articles. Nous allons faire ce processus à environ 100 articles. Tous les articles commencent par YN mais après cela varie. Nous aurons donc environ 100-150 articles avec des noms commençant par YN.


@Ryanwildry J'ai un fichier Excel de tous les articles de notre inventaire. Cela aiderait-il?



0
votes

Je commencerais en écrivant une fonction générale qui génère les noms (passés sous forme de variante variante ) un nombre donné de fois: xxx

ici, vous pouvez voir Le sous qui teste ceci: xxx

qui vous donne cette sortie: xxx


0 commentaires

3
votes

Vous pouvez spécifier où vous souhaitez lire et où vous voulez commencer à écrire et combien de fois vous voulez répéter! Il suffit de changer le code: xxx


1 commentaires

@Jorgeribibeiro Et si je veux répéter 32768 fois? ;)