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
3 Réponses :
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
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 ( ) code>
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?
Je commencerais en écrivant une fonction générale qui génère les noms (passés sous forme de variante ici, vous pouvez voir Le sous qui teste ceci: p> qui vous donne cette sortie: p> variante code>) un nombre donné de fois:
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:
@Jorgeribibeiro Et si je veux répéter 32768 fois? ;)
Ce sera
= "pommes" + si (compometif (A1: A100, "Pommes") <= 1, "", Countif (A1: A100, "Pommes")) Code>Dupliqué possible de Existe-t-il un moyen d'effectuer une jointure croisée ou un produit cartésien dans Excel?