excel vérifier si une combinaison de cellules dans une rangée existe dans une plage

J'ai regardé autour et je ne peux pas le find.

Donc disons que j'ai une gamme de ces strings uniques:

Dim uniques(10) As Ssortingng 

Maintenant, chacune de ces strings est représentée dans la colonne A de la feuille de calcul.

De plus, j'ai une gamme d'entiers allant de 1 à 365 représentant des valeurs uniques dans la colonne B. Le ième jour i

Mon énigme est: je veux savoir s'il existe une ligne où A est uniques (1) et b est i et je veux organiser ce process à travers tous les unsiques et tous les i possibles

Je cherche un moyen efficace de le faire, quelque chose de mieux que de boucler la gamme en question, pour chaque unique, pour chaque jour. Pour l'logging, mes données réelles countnt tous les jours de l'année et le nombre de jours écoulés depuis qu'un certain événement s'est produit, de sorte que mon nombre de lignes peut atteindre 365 ^ 2 et peut-être même si l'événement s'est produit il y a plus d'un an .

COUNTIFS semble fonctionner très bien. J'aimerais simplement aller:

 numOfOccurences = Sheet1.Countifs(countrange,dayrange,uniques(1),irange,i) 

Et si numOfOccurences est supérieur à 0, je sais qu'il existe.

Ou existe-t-il une fonction qui brise une gamme en rangées dans un réseau vba? Pour que cela ressemble à ceci {[A2, B2], [A3, B3], …} Je pourrais faire des dégâts avec ça parce que les deux colonnes sont sortingées, A puis B. Je ne suis pas impatient de faire la fonction moi-même.

Toutes les idées sont appréciées

Quelque chose comme ça fonctionne. Ce n'est peut-être pas optimal mais montre comment faire itérer à travers les lignes dans une plage:

 Sub test() Dim count As Long, i As Long Dim myRow As Range Dim uniques As Variant uniques = Array("a", "b", "c", "d", "e", "f", "g", "h", "i") 'for example i = 12 'for example For Each myRow In Range("A1:B365").Rows If myRow.Cells(1, 1).Value = uniques(1) And myRow.Cells(1, 2).Value = i Then count = count + 1 End If Next myRow MsgBoxS count End Sub 

Une telle chose devrait fonctionner pour vous, ou du less vous faire démarrer dans la bonne direction. Il trouve toutes les occurrences des 10 valeurs uniques et obtient alors les nombres correspondants de la colonne B. Je ne sais pas comment vous remplissez vos valeurs uniques, alors j'ai juste fait quelque chose. La boucle Range.Find devrait être pertinente pour vous en grande partie inchangée.

 Sub tgr() Dim rngFound As Range Dim arrUnq(1 To 10) As Ssortingng Dim varUnq As Variant Dim strFirst As Ssortingng Dim strResults As Ssortingng arrUnq(1) = "aaa" arrUnq(2) = "bbb" arrUnq(3) = "ccc" arrUnq(4) = "ddd" arrUnq(5) = "eee" arrUnq(6) = "fff" arrUnq(7) = "ggg" arrUnq(8) = "hhh" arrUnq(9) = "iii" arrUnq(10) = "jjj" For Each varUnq In arrUnq Set rngFound = Columns("A").Find(varUnq, Cells(Rows.Count, "A"), xlValues, xlPart) If Not rngFound Is Nothing Then strFirst = rngFound.Address Do 'Here you can check what value is in column B by using rngFound.Offset(, 1).Value 'You can use this to compare to something you're looking for, or just record the result as shown in this code strResults = strResults & Chr(10) & varUnq & ": " & rngFound.Offset(, 1).Value 'Advance to the next found instance of the unique ssortingng Set rngFound = Columns("A").Find(varUnq, rngFound, xlValues, xlPart) Loop While rngFound.Address <> strFirst End If Next varUnq If Len(strResults) > 0 Then strResults = Mid(strResults, 2) 'Get rid of opening chr(10) MsgBox strResults Else MsgBox "No matches found for any of the 10 unique values" End If End Sub