Asuming que toutes vos chaînes sont dans une colonne, vous pouvez ajouter une deuxième colonne avec leur position (numéro de ligne) et faire un tableau croisé dynamique sur les cordes affichant les chefs d'accusation. Pour obtenir la position d'une chaîne qui vous intéresse, utilisez la fonction de zoom de la table pivotante (double-cliquez sur le nombre à côté d'une chaîne) pour créer une nouvelle feuille avec tous les détails dossiers - et la position est affichée
espoir qui aide
Bonne serrure
EDIT après les commentaires échangés:
Je pencherais pour une solution qui scanne vos données seulement 1 fois et non récursive , copie valeurs à une ing seconde feuille:
for each string in sourcetable
if found in targettable
increase targettable.counter by 1 (remark: in column_2)
else
put sourcetable.string at end of targettable
put "1" in targettable.counter (remark: occurence = 1 in column_2)
endif
put sourcetable.index into targettable.column(counter+2)
next
jusqu'à présent métacode .... avez-vous besoin de plus d'aide au code VBA en fait cela?
EDIT 2
OK .... fait une & rapide sale ....
Sub CountString()
Dim S As Range, T As Range, Idx As Long, Jdx As Long
Set S = Worksheets("Sheet1").[A2] ' first row is header
Set T = Worksheets("Sheet2").[A2] ' first row is header
Idx = 1
Do While S(Idx, 1) <> ""
Jdx = FindInRange(T, S(Idx, 1))
If T(Jdx, 1) = "" Then
T(Jdx, 1) = S(Idx, 1)
T(Jdx, 2) = 1
T(Jdx, 3) = Idx
Else
T(Jdx, 2) = T(Jdx, 2) + 1
T(Jdx, T(Jdx, 2) + 2) = Idx
End If
Idx = Idx + 1
Loop
End Sub
Function FindInRange(R As Range, A As String) As Long
Dim Idx As Long
Idx = 1
Do While R(Idx, 1) <> ""
If R(Idx, 1) = A Then
Exit Do
End If
Idx = Idx + 1
Loop
FindInRange = Idx
End Function
testé avec 500 mots de "Lorem ipsum" - prend supérieure à 1 seconde sortie en sheet_2 ressemble
String Count Position ...
Lorem 1 1
ipsum 6 2 45 65 232 323 462
dolor 5 3 42 214 321 335
sit 6 4 79 148 249 295 415
amet 6 5 80 149 250 296 416
consectetur 8 6 117 288 298 396 457 473 486
adipiscing 3 7 180 402
espoir qui aide
Quel genre de liste utilisez-vous? Depuis que vous dites "colonne", je suis maintenant suspect que ce peut être un ListBox, est-ce exact? –
Bonjour Tony, c'est juste une colonne avec des chaînes de texte. Chaque cellule de cette colonne contient 1 chaîne. – Pieter