=IFERROR(INDEX(IF(MOD(COLUMN(A1),2)=1,发货量!$A$1:$BP$1,发货量!$A2:$BP2),SMALL(IF(发货量!$AL2:$BP2<>0,COLUMN(发货量!$AL2:$BP2),100),IF(MOD(COLUMN(A1),2)=1,COLUMN(A1)/2+0.5,COLUMN(A1)/2))),"")
公式解释如下:
IF(MOD(COLUMN(A1),2)=1,发货量!$A$1:$BP$1,发货量!$A2:$BP2):判断所在的列是奇数还是偶数,如果是奇数,为,发货量!$A$1:$BP$1,否则的话为发货量!$A2:$BP2。前面加上INDEX,就是奇数时在第一行取值,偶数时在第二行取值
IF(发货量!$AL2:$BP2<>0,COLUMN(发货量!$AL2:$BP2),100):将AL2:BP2中单元格的数字与0比较,如果不为0,就返回单元格所在的列,否则就返回100(也可以是1000,只要比关系列数大就可以)。这样就构成一个新数列,出来不为0的返回所在列外,其他都是100.假如有10列,第3、7列满足条件,则新数列为{100,100,3,100,100,100,7,100,100,100}
IF(MOD(COLUMN(A1),2)=1,COLUMN(A1)/2+0.5,COLUMN(A1)/2)):随着右拉,如果所在列为奇数,则变成1、2、3、4……,偶数列也是如此,主要是与上面的新数列匹配,分别求出里面的小值。
SMALL(IF(发货量!$AL2:$BP2<>0,COLUMN(发货量!$AL2:$BP2),100),IF(MOD(COLUMN(A1),2)=1,COLUMN(A1)/2+0.5,COLUMN(A1)/2))):分别在奇数列和偶数列取出新数列的第1小、第2小、第3小……的数字,也就是新数列中的第3列、第7列。
确定了所在列,又已知所在行,用INDEX函数就可以定位出这个数字了
|