2009-12-10 3 views
7

J'essaie d'éviter d'utiliser trop Excel, mais quand je le fais, j'aime utiliser des références structurées car elles semblent beaucoup plus propres à écrire.Syntaxe de la table de référence structurée Excel

Si je crée une table appelée "table1" avec les colonnes "col1" et "col2", comment puis-je référencer la première ligne dans "col1" en utilisant une référence structurée dans une autre table? J'ai essayé la syntaxe =table1[[#this row],[col1]], et juste obtenir une erreur. Y a-t-il une syntaxe comme =table1[1,1] or =table1[1,[col1]]? Bien sûr, cela ne fonctionne pas non plus, mais quel est l'équivalent?

C'est très énervant, car il semble que cela devrait être simple.

Répondre

12

Table1[[#This Row][Column1]]-t fonctionne, mais la formule doit être sur la même ligne que la ligne du tableau que vous souhaitez référencer.

Pour faire référence à la première ligne, d'ailleurs, utilisez COUNTIFS(criteria_range1, criteria1 [, criteria_rangen, criterian]) Ou le SUMIFS() un peu plus complexe si vous avez besoin des valeurs numériques au lieu de compte, comme mentionné par studgeek:

SUMIFS(sum_range1, criteria_range1, criteria1 [, criteria_rangen, criterian]) 

Vous aurez bien sûr besoin d'une ligne unique critères par lesquels sélectionner la rangée. Ainsi, par exemple:

Table1 
ID Value Name 
1 2  Two 
2 4  Four 
3 8  Eight 

SUMIF(Table1[Value], Table1[ID], 2) ... retourne une valeur de 4 (ou zéro si ID = 2 introuvable). Si votre valeur n'est pas numérique, vous ne pouvez pas utiliser cette méthode, évidemment. Cependant, akuhn a presque atteint la vraie réponse, mais il n'est pas allé assez loin dans son explication/exemple, l'OMI.

INDEX(Table1[Name], 2) retours « Quatre » INDEX(Table1, 1, 1) renvoie 1

2

essayer

=INDEX(col1,1) 

vous pouvez même traiter les cellules dans un tableau 2-dim, en utilisant

=INDEX(reference,row_num,column_num) 
0

Il ne semble pas être un moyen explicite d'utiliser le référencement structuré à des lignes particulières dans un table. Comme le dit Adrian, vous pouvez utiliser INDEX. Vous pouvez également utiliser l'intersection implicite pour référencer la même ligne: si la table1 est sur la ligne 5:10 et la table 2 sur la ligne 5:10, l'utilisation d'une référence structurée avec des noms de colonne recoupe implicitement la même ligne.

Vous pouvez également entrer la référence structurée sous la forme d'une formule matricielle multiple (sélectionnez plusieurs cellules, entrez la formule et utilisez Ctrl-Maj-Entrée) dans différentes lignes et cela fonctionnera.

0

Au lieu de INDEX, je suggère SUMIF. Il vous permettra d'utiliser des valeurs de table plutôt que des numéros de lignes explicites (qui peuvent se casser si vous commencez à filtrer ou à commander). Par exemple (à partir du lien suivant), cela résume la colonne Montant et inclure uniquement les lignes où le type est égal à Vérifiez et où compte est égal à Utilitaires: =SUMIFS(Table1[Amount],Table1[Type],“Check”,Table1[Account], “Utilities”)

Voir ce lien plus d'informations: http://office.microsoft.com/en-us/excel-help/using-structured-references-with-excel-tables-HA010155686.aspx

0

Ce serait bien si une table pourrait avoir une colonne désignée comme la clé primaire (qui peut être numérique ou chaîne), puis un ref structuré pourrait inclure une façon de référencer une ligne par sa clé primaire. Ce serait la syntaxe de sucre autour de VLOOKUP, mais la table pourrait savoir si elle a été triée sur la clé primaire, et faire des recherches efficaces seulement dans ce cas. Il semble que VLOOKUP incorpore du mal dans celui-ci qui trouve la mauvaise rangée si vous dépendez de trié, surtout quand les tables ont un moyen pratique de trier les lignes.

0

L'astuce dans ce cas est d'utiliser la fonction Excel OFFSET:

  • Accès 1er rang de la colonne nommée Column1 dans la même table: OFFSET([Column1],0,0,1)
  • Accès 2e rangée OFFSET([Column1],1,0,1)

etc.

Bien sûr, vous pouvez utiliser ceci pour accéder à une autre table et colonne en le préfixant simplement avec le nom de la table. Par exemple, OFFSET(Table2[Column3],4,0,1) accédera à la 4ème ligne de la colonne 'Colonne3' de 'Table2'

Questions connexes