NDIRECT函数对引用进行计算,并显示其内容。可能大家对这个函数不是很熟悉,打个比方,你在A1单元格输入“我“,再到另一个单元格输入”=INDIRECT("A"&1)",结果就会返回”我“。那这个函数有什么用呢,下面来举例说明:Vxx检测VBA Vxx检测VBA 我们的击实试验表格盒号一般都是横向排列的,而我们需要引用的盒号一般都是竖向的,假设你的试验记录的表格在A1-J1这10个行方向的单元格,而你要引用的盒号在A30-A40这个列方向的单元格,你在A1单元格输入"=A30",拖动黑色“十”字光标,会出现B1=B30,C1=C30,这样的情况,这是excel默认的公式填充方式。但我们可以INDIRECT函数实现A1=A30,B1=A31,C1=A32。我们发现,横向填充的公式都是”A“开头的,只是数字发生了变化,我们可以利用COLUMN(列标函数)变换,因为引用是从A30开始,30对应的列号是”AD“,下面来写公式:在A1单元格输入”=INDIRECT("A"&COLUMN(AD1))”,他会返回单元格A30的值,横向拖动,公式会变成Vxx检测VBA
=INDIRECT("A"&COLUMN(AE1)),结果等于A31,以此类推,就会返回单元格A30-A40的值。Vxx检测VBA Vxx检测VBA 前面说了行对列的引用,下面来说列对行的引用,假设原始数据在A1-J1单元格,我要的效果是A30=A1,A31=B1……,这里要换的是字母,后面的数字不变,这就需要用到 CHAR函数(CHAR函数---将代码转为字符),CHAR(65)=A、CHAR(66)=B,在A30单元格输入公式:=INDIRECT(CHAR(ROW(A65))&1),下拉,就可以得到你想要的效果。Vxx检测VBA Vxx检测VBA 再来说合并单元格对连续单元格的引用,假设我的A1、A2; A3、A4;……一直到A20单元格都是两行一合并(实际只有10个数值),而我需要自动引用连续单元格A30:A40的值,如果你在A1单元格输入:A1=A30,下拉,会出现A3=A32,A5=A34……,这显然不是我们想要的结果,我们要的结果是A1=A31,A3=A32,A5=A33……,也就是每次只递进1,因为从A1单元格开始,公式是这样的,A1单元格输入=INDIRECT("A"&30+(ROW(A1)+1)/2).下拉填充公式。Vxx检测VBA Vxx检测VBA 最后再来说连续单元格对合并单元格的引用,和前面一样,合并单元格在A1到A20,有10个数值,假设我要在C1到C10单元格引用这10个数值,在C1单元格输入=INDIRECT("A"&1+(ROW(A1)-1)*2),下拉填充,就可以实现连续单元格对合并单元格的自动填充。Vxx检测VBA |