Oui, c'est normal. Pour info 2 explications :
La principale : en VBA sur Excel ce qui prend le plus de temps c'est l'écriture/lecture dans le classeur. C'est à dire chaque "accès" pour lire une cellule ou changer sa valeur.
Dans votre code on va piocher les valeurs dans le classeur à chaque étape, c'est très lourd. On peut, alternativement, sauvegarder les valeurs en mémoire dans un tableau et le parcourir, c'est beaucoup plus rapide.
De meme pour écrire, au lieu de remplir les cellules une par une, on peut créer un tableau en mémoire (une matrice 2D) et l'intégrer directement dans le classeur.
La seconde : quand c'est possible, il est malin d'utiliser les fonctions Excel de base, qui sont mieux optimisées que le VBA exécuté uniquement en mono-thread. En l'occurrence j'ai utilisé Autofilter, qui applique un filtre sur la colonne des "x" comme on le ferait manuellement. Ça m'a permis d'éviter d'écrire une longue boucle, et ensuite j'ai juste besoin d'un accès en lecture/écriture pour copier/coller le résultat.
Voilà, dans les grosses lignes, l'explication. Bonne journée et au plaisir d'aider.