Comme je l'ai mentionné, vous pouvez masquer la complexité d'une fonction définie par l'utilisateur tels que
Public Function Financials(month As String, item As String) As String
'Object to represent the table
Dim lo As ListObject: Set lo = Range("Table1").ListObject
'Integers to act as coordinates
Dim x As Integer, y As Integer
'Find the column
x = lo.HeaderRowRange.Find(month).Column - lo.HeaderRowRange.Column + 1
'Find the row
y = lo.DataBodyRange.Columns(1).Find(item).Row - lo.HeaderRowRange.Row
' Return the value at the coordinates x,y
Financials = lo.DataBodyRange(y, x).Value
End Function
(Mise à jour Range("Table1").ListObject
avec le nom de la table dans votre classeur, sinon, vous pouvez ajouter un autre paramètre à la fonction)
Vous pouvez ensuite appeler cette fonction dans une cellule de classeur, comme cet exemple
=Financials("Feb", "Profit")
H Johan, est-ce qu'une formule de correspondance d'index convient à quelque chose comme '= INDEX (Table1, Correspondance (" Revenus ", Table1 [Finances], 0), MATCH (" Feb ", Table1 [#Headers], 0),) 'https://exceljet.net/formula/two-way-lookup-with-index-and-match – maxhob17
@ maxhob17 si c'est la formule la plus lisible en utilisant les noms, je pense que nous devons nous détendre ce désir –
Je ne sais pas de une meilleure façon; Je suppose que vous pourriez cacher la complexité de cette formule en créant une fonction définie par l'utilisateur avec VBA http://www.excel-easy.com/vba/examples/user-defined-function.html – maxhob17