我正在制作一个程序而且我正在使用PHPExcel。在程序内部,您可以选择宽度和高度。 (宽度是绿色行,蓝色是高度)
所有白色数字都是价格。 让我说插入1400宽度和1600高度。价格应该是640.我怎样才能做到这一点?
答案 0 :(得分:0)
最简单的选项是在行1400
(示例中为1
)中查找哪个列包含D
,以及{{1}列中包含1600
的行(在您的示例中为A
),然后使用它来读取该单元格的值(5
)
一种更聪明的方法是使用Excel公式:
D5
替换=INDIRECT(CONCATENATE(SUBSTITUTE(ADDRESS(1,MATCH(1400,A1:E1,0),4),1,""),MATCH(1600,A1:A17,0)))
和1400
的相应查找值,并将1600
范围调整为宽度和高度查找的完整大小....在MS Excel本身,您可以使用行和列范围(MATCH
)和(A:A
),但PHPExcel计算引擎不会正确处理行和列范围,但它将适用于单元格范围
作为上述公式的解释:
1:1
在单元格范围A1:E1(查找宽度匹配)中查找值1400。 MATCH(1400,A1:E1,0)
的返回值是该行所在列的数字偏移量。在这种情况下,它将返回MATCH()
。
4
将列号转换为列字母...例如将SUBSTITUTE(ADDRESS(1,<4>,4),1,"")
转换为4
。如果你的范围没有从D
开始,那么你必须添加一个偏移来获得正确的字母
A
与之前的MATCH类似,但这次在您的高度列范围(MATCH(1600,A1:A17,0)
)中搜索值A1:A17
。它将在找到值的范围内返回偏移量。同样,如果您的范围不是从行1600
开始,那么您需要添加偏移量。在您的情况下,它将返回1
。
5
将计算的列和行值连接在一起,以提供单元格地址(CONCATENATE(<D>,<5>)
)
D5
读取我们计算的单元格地址(INDIRECT(<D5>)
)的值,给出值D5