L'option la plus facile est de trouver quelle colonne contient 1400
en ligne 1
(D
dans votre exemple), et quelle ligne contient 1600
dans la colonne A
(5
dans votre exemple), puis l'utiliser pour lire la valeur à cette cellule (D5
)
une manière un peu plus habile consiste à utiliser une formule Excel:
=INDIRECT(CONCATENATE(SUBSTITUTE(ADDRESS(1,MATCH(1400,A1:E1,0),4),1,""),MATCH(1600,A1:A17,0)))
en remplaçant les valeurs de recherche appropriées pour 1400
et 1600
et en ajustant les plages MATCH
à la taille maximale pour vos recherches de largeur et de hauteur .... Dans MS Excel lui-même, vous pouvez utiliser des plages de lignes et de colonnes (A:A
) et (1:1
) , mais le moteur de calcul PHPExcel ne traitera pas ramer plages disponibles correctement, mais il fonctionnera avec des plages de cellules
Comme une explication de la formule ci-dessus:
MATCH(1400,A1:E1,0)
fait une recherche pour la valeur 1400 dans la plage de cellules A1: E1 (recherche d'une correspondance pour votre largeur). La valeur renvoyée pour MATCH()
est un décalage numérique dans cette ligne pour la colonne où elle est trouvée. Dans ce cas, il renverra 4
.
SUBSTITUTE(ADDRESS(1,<4>,4),1,"")
Transforme le numéro de colonne à une lettre de la colonne ... convertit par exemple 4
-D
. si votre gamme n'a pas commencé à A
, alors vous devez ajouter un décalage pour obtenir la lettre correcte
MATCH(1600,A1:A17,0)
Similaire au match précédent, mais cette fois la recherche dans vos hauteurs gamme de colonnes (A1:A17
) pour la valeur 1600
. Il retournera le décalage dans cette plage où il trouve la valeur. Encore une fois, si votre plage ne commence pas dans la ligne 1
, vous devez ajouter un décalage. Dans votre cas, il renverra 5
.
CONCATENATE(<D>,<5>)
Concatène la colonne calculée et valeurs pour la ligne ensemble pour donner une adresse de cellule (D5
)
INDIRECT(<D5>)
lit la valeur à l'adresse de la cellule que nous avons calculé (D5
) donnant la valeur 640