web-dev-qa-db-fra.com

Énorme feuille de calcul Excel prenant trop de temps pour mettre à jour des liens ou calculer des formules

J'ai une feuille de calcul Excel avec 5000 rangées et colonnes jusqu'à AY (taille 12 Mo). À l'exception des six premières colonnes, le reste contient vlookups ou d'autres formules. Tous les vlookups sont dans une feuille de calcul Excel distincte. J'ai changé le paramètre Excel pour mettre à jour manuellement les liens et calculer les formules. Maintenant, chaque fois que j'essaie de mettre à jour les liens, Soit Excel Huns ou cela prend quelque chose comme 15 minutes.

À l'heure actuelle, je travaille à la fente de la feuille de calcul en quatre cas; où je mettrai à jour quatre feuilles d'excellence différentes en séquence. Mais cela nécessite une copie manuelle des colonnes d'index à la prochaine étape. Il faut 3-4 heures pour mettre à jour les liens. Hier, j'ai commencé à obtenir des messages d'erreur qui:

Excel ne répond pas suffisamment de ressources pour compléter l'opération.

Je n'ai rien d'autre choix, mais de scinder l'opération entière en quatre petites étapes nécessitant une intervention manuelle.

J'ai regardé l'index. Pas vraiment applicable sur mon cas. Des idées sur la façon dont je peux le faire rapidement?

4
user7231

5000 lignes de 50 colonnes ne sont pas une grande feuille de calcul. 12 Mo est une taille de fichier de petite à moyenne taille parfaitement raisonnable et vous n'avez pas besoin de faire quoi que ce soit aussi drastique que de retravailler dans une base de données ou quelque chose de similaire.

De votre description, le problème semble être les liens. Quelle est la taille des classeurs référencés? Sont-ils recalculant lorsque vous leur liez-vous? J'aime l'idée pré-ouverture: vous pouvez voir ce qui se passe alors.

Votre utilisation de la mémoire est-elle en mémoire (regardez le gestionnaire de tâches) dépassant votre RAM physique disponible? Une fois que la mémoire doit être échangée sur le disque, les choses commencent à ralentir beaucoup.

Au-delà de l'aide de pré-ouverture et de tri, je suggère de jeter un coup d'œil aux formules non-recherches: peut-on être convertie en formules de matrice et appelée une fois par calcul au lieu d'une fois par ligne?

Sur la chose Vlookup: Avez-vous essayé d'utiliser INDEX(value_range, MATCH(lookup_key, key_range))? Il y a des situations où il est plus rapide.

Vous ne dites pas si vous avez des vba. Si vous le faites, regardez le nombre de fois les fonctions VBA sont appelées et combien de temps ils prennent. Code VBA qui fait beaucoup de référence aux objets Excel peut être coûteux.

5
Mike Woodhouse

S'il y a des données dans votre dossier qui ne doivent pas nécessairement être conditionnelle et resteront les mêmes (par exemple, la date de naissance d'une personne), puis après votre premier VLookup pour obtenir les données, "copier" et "Coller des valeurs spéciales" toute la colonne/Rangez pour arrêter le fichier de recalculer ces cellules chaque fois que vous exécutez le calcul. Exécution d'un vlookup sur les données provenant d'un autre Vlookup que j'ai remarqué prend assez de temps.

4
Andrew

Ouvrez le (s) classeur (s) que vous connaissez avant d'ouvrir le classeur contenant les liens.

Et triez les données, utilisez l'option triée dans Vlookup (utilisez true pour le dernier paramètre).

2
Charles Williams

Je ne sais pas si ceci est une aide pour votre situation car elle implique des liens de base de données, mais j'avais le même problème, sauf que cela prendrait beaucoup de temps pour mettre à jour une feuille de calcul exécutant une requête de base de données.

La façon dont j'ai parcouru des choses d'un facteur de 15 était en faisant d'abord la requête Sélectionnez les données nécessaires au lieu de faire filtrer Excel. Deuxièmement, dans la fenêtre Propriétés de la connexion de ma connexion DB, j'ai coché l'option "Supprimer les données de la plage de données externe avant d'enregistrer le classeur." Cela a été énormément aidé pour que mon dossier n'était pas continuellement de plus en plus en taille avec les plus grandes quantités de données que je peux interroger.

Maintenant, toute ma rafraîchissement prend environ 2-3 secondes au lieu de 30-45.

0
NoCatharsis

Dans mon expérience, j'ai trouvé que la liaison à des fichiers externes est le processus le plus lent de tous. J'ai lu que cela est dû à Excel devoir ré-mettre à jour le modèle de calcul à chaque fois par le biais d'un certain nombre de fichiers liés différents, plutôt qu'à un seul.

Je soupçonne de votre premier poste que c'était ce qui a ralenti le calcul du calcul pour commencer. Avez-vous essayé de déplacer toutes les données dans le même fichier de travail et de mettre à jour tous les liens pour être interne à ce fichier?

0
DaveRGP