1行(row)毎にcellをなめる前提でコンテキストノードがcellのとき

<xsl:variable name="col" select="position()"/>
何列目かを変数に保存

<xsl:value-of select="../preceding-sibling::row[1]/cell[$col]/text()"/>
コンテキストノードの親(row)の→../
前側の兄弟の→preceding-sibling::
1番直近のrowの→row[1]/
$col列目のcellの→cell[$col]/
テキスト→text()

preceding-siblingは元データの下側からカウントアップしていくのがハマリどころ