web-dev-qa-db-fra.com

Pourquoi y a-t-il encore une limite de lignes dans Microsoft Excel?

Jusqu'à Office 2007, Excel a un maximum de 65 000 lignes. Office 2007 a augmenté cela jusqu'à un maximum d'un million de lignes, ce qui est bien sûr plus agréable; mais je suis curieux - pourquoi y a-t-il une limite? De toute évidence, les performances ralentiront de façon exponentielle à mesure que vous augmentez la taille de la feuille de calcul; mais il ne devrait pas être très difficile d’optimiser Excel pour cela en commençant par une petite feuille et en la "redimensionnant" dynamiquement uniquement selon les besoins. Étant donné le travail que cela a dû être pour augmenter la limite de 65K à 1 million, pourquoi ne sont-ils pas allés jusqu'au bout, de sorte qu'elle n'est limitée que par la quantité de mémoire et d'espace disque disponibles?

44
D-Dog

(mis à jour à cause d'une erreur ... Une suggestion à tout le monde: ne postez pas sur SO avant d'être complètement réveillé)

Probablement à cause des optimisations. Excel 2007 peut avoir un maximum de 16 384 colonnes et 1 048 576 lignes. Des chiffres étranges?

14 bits = 16 384, 20 bits = 1 048 576

14 + 20 = 34 bits = plus d'un registre 32 bits peut contenir.

Mais ils doivent également stocker le format de la cellule (texte, nombre, etc.) et le formatage (couleurs, bordures, etc.). En supposant qu'ils utilisent deux mots de 32 bits (64 bits), ils utilisent 34 bits pour le numéro de cellule et 30 bits pour d'autres choses.

Pourquoi est-ce important? En mémoire, ils n'ont pas besoin d'allouer toute la mémoire nécessaire pour la feuille de calcul entière, mais uniquement la mémoire nécessaire à vos données, et chaque donnée est étiquetée avec dans quelle cellule elle est censée se trouver.

Mise à jour 2016:

Trouvé un lien vers spécification de Microsoft pour Excel 2013 et 2016

  • Classeurs ouverts: limités par la mémoire disponible et les ressources système
  • Taille de la feuille de calcul: 1 048 576 lignes (20 bits) par 16 384 colonnes (14 bits)
  • Largeur de colonne: 255 caractères (8 bits)
  • Hauteur de ligne: 409 points
  • Sauts de page: 1026 horizontal et vertical (nombre inattendu, probablement faux, 10 bits est 1024)
  • Nombre total de caractères qu'une cellule peut contenir: 32 767 caractères (signés 16 bits)
  • Caractères dans un en-tête ou un pied de page: 255 (8 bits)
  • Feuilles dans un classeur: limitées par la mémoire disponible (la valeur par défaut est 1 feuille)
  • Couleurs dans un classeur: 16 millions de couleurs (32 bits avec accès complet au spectre de couleurs 24 bits)
  • Vues nommées dans un classeur: limitées par la mémoire disponible
  • Formats de cellule/styles de cellule uniques: 64 000 (16 bits = 65536)
  • Styles de remplissage: 256 (8 bits)
  • Épaisseur et styles de ligne: 256 (8 bits)
  • Types de polices uniques: 1 024 polices globales (10 bits) disponibles pour utilisation; 512 par classeur
  • Formats numériques dans un classeur: entre 200 et 250, selon la version linguistique d'Excel que vous avez installée
  • Noms dans un classeur: limité par la mémoire disponible
  • Windows dans un classeur: limité par la mémoire disponible
  • Hyperliens dans une feuille de calcul: 66 530 hyperliens (nombre inattendu, probablement faux. 16 bits = 65536)
  • Volets dans une fenêtre: 4
  • Feuilles liées: limitées par la mémoire disponible
  • Scénarios: limité par la mémoire disponible; un rapport de synthèse ne montre que les 251 premiers scénarios
  • Changer les cellules dans un scénario: 32
  • Cellules réglables dans le solveur: 200
  • Fonctions personnalisées: limitées par la mémoire disponible
  • Plage de zoom: 10% à 400%
  • Rapports: limité par la mémoire disponible
  • Trier les références: 64 en un seul tri; illimité lors de l'utilisation de tris séquentiels
  • Annuler les niveaux: 100
  • Champs dans un formulaire de données: 32
  • Paramètres du classeur: 255 paramètres par classeur
  • Éléments affichés dans les listes déroulantes de filtre: 10 000
35
some

En un mot - la vitesse. Un index pouvant contenir jusqu'à un million de lignes tient dans un mot 32 bits, il peut donc être utilisé efficacement sur des processeurs 32 bits. Les arguments de fonction qui tiennent dans un registre CPU sont extrêmement efficaces, tandis que ceux qui sont plus grands nécessitent d'accéder à la mémoire à chaque appel de fonction, une opération beaucoup plus lente. La mise à jour d'une feuille de calcul peut être une opération intensive impliquant de nombreuses références de cellule, la vitesse est donc importante. En outre, l'équipe Excel s'attend à ce que toute personne traitant plus d'un million de lignes utilise une base de données plutôt qu'une feuille de calcul.

9
Two Bit Gangster