Supprimer des Cellules dans excel et déplacer le contenu vers le haut en fonction de la valeur
J'ai un peu de code de travail afin de condenser plusieurs colonnes dans excel, en supprimant toutes les cellules vides et en déviant les données vers le haut.
Chaque cellule contient des formules, j'en ai trouvé un extrait de code qui me laisser utiliser un specialcells de commande, mais qui ne disparaît vraiment cellules vides et non à ceux qui contenait une formule, où le résultat serait de faire de la cellule vide.
C'est ce que je suis en train de l'aide, qui a été une modification de quelque chose que j'ai trouvé sur ce site il y a un moment:
Sub condensey()
Dim c As Range
Dim SrchRng
Set SrchRng = ActiveSheet.Range("B2", ActiveSheet.Range("B208").End(xlUp))
Do
Set c = SrchRng.Find("", LookIn:=xlValues)
If Not c Is Nothing Then c.Delete
Loop While Not c Is Nothing
End Sub
J'ai essayé d'augmenter la plage de la feuille active pour inclure une deuxième colonne, mais excel va juste les noix, en supposant qu'il est en train de le faire pour chaque cellule dans l'ensemble de la table.
J'ai ensuite repris ce morceau de code pour chaque colonne que je veux afin de condenser la matière.
Maintenant c'est grand, c'est exactement ce que je veux faire, mais il est lent comme n'importe quoi, surtout quand chaque colonne peut contenir jusqu'à plus de 200 lignes. Toutes les idées sur la façon d'améliorer les performances de cela, ou peut-être le ré-écrire en utilisant une autre méthode?
- Avez-vous éteint screenupdating et jeu de calcul manuel?
Vous devez vous connecter pour publier un commentaire.
Ce couru dans <1sec sur 300rows x 3cols
J'ai trouvé que l'utilisation de filtre automatique sur chaque colonne a été plus rapide qu'en parcourant chaque cellule de la plage ou de "Trouver"ing chaque cellule vide dans la gamme. À l'aide du code ci-dessous et de certaines données-échantillon (3 colonnes avec environ 300 lignes de vide et non les cellules vides), sur ma machine, il a pris 0.00063657 jours. À l'aide de la boucle à travers chaque cellule de la méthode, il a fallu 0.00092593 jours. J'ai aussi couru votre code sur les données de l'échantillon, et il a fallu beaucoup plus de temps (je n'ai pas la laisser se terminer). Jusqu'à présent, la méthode ci-dessous les rendements les résultats les plus rapides, mais j'imagine que quelqu'un va trouver une méthode plus rapide.
Il apparaît que la suppression de la méthode est le plus gros goulot d'étranglement. Il peut être plus rapide pour filtrer les non-cellules vides et les coller dans une nouvelle gamme, puis supprimer l'ancienne gamme une fois que vous avez terminé.