我有2组数据。一种是坦克名称
Tank Name
A1
A2
B1
B2
下一个是ON / OFF数据
ON/OFF
0
1
1
1
1
1
0
0
1
1
1
1
1
1
1
0
0
1
1
1
0
1
1
现在我正在寻找的结果是,当ON / OFF为1时,将提及第一个储罐:当其为0时,将不提及任何储罐。一旦提及所有战车,则应从第一个战车即A1开始。但是,如果介于0和0之间,则应从A1重新开始。.
Result expected
0
1 A1
1 A2
1 B1
1 B2
1 A1
0
0
1 A1
1 A2
1 B1
1 B2
1 A1
1 A2
1 B1
0
0
1 A1
1 A2
1 B1
0
1 A1
1 A2
您可以在此处查看Google工作表:方案2 https://docs.google.com/spreadsheets/d/1SP2SfA-bzzhHgfrvpyUIkeQfUykata0oHxyD-x69yxE/edit?usp=sharing
希望获得一些帮助以解决此问题。 谢谢
答案 0 :(得分:0)
单一公式解决方案:
=FILTER(IF(B1:B=0,"",VLOOKUP(IFERROR(VLOOKUP(SUMIF(ROW(B1:B),"<="&ROW(B1:B),B1:B),{ROW(INDIRECT("a1:a"&COUNTIF(B:B,1))) , TRANSPOSE(SPLIT(TEXTJOIN("",1,TRANSPOSE(TEXT(ROW(INDIRECT("a1:a"&MAX(LEN(SPLIT(TEXTJOIN("",1,B1:B),"0")))))*(LEN(SPLIT(TEXTJOIN("",1,B1:B),"0"))>=ROW(INDIRECT("a1:a"&MAX(LEN(SPLIT(TEXTJOIN("",1,B1:B),"0")))))),"0"","";;"))),",")) },2,),0),{row(INDIRECT("a1:a"&COUNTIF(B1:B,1))) , VLOOKUP(MOD(ROW( INDIRECT("a1:a"&COUNTIF(B1:B,1)) )-1,COUNTA(A1:A))+1,{ROW(A1:A)-row(A1)+1,A1:A},2,)},2,)),B1:B<>"")
两个公式都可以做到。
C1中的#1。对于具有循环的累加总和:
=Filter(IFERROR(VLOOKUP(SUMIF(ROW(B1:B),"<="&ROW(B1:B),B1:B),{ROW(INDIRECT("a1:a"&COUNTIF(B:B,1))) , TRANSPOSE(SPLIT(TEXTJOIN("",1,TRANSPOSE(TEXT(ROW(INDIRECT("a1:a"&MAX(LEN(SPLIT(TEXTJOIN("",1,B1:B),"0")))))*(LEN(SPLIT(TEXTJOIN("",1,B1:B),"0"))>=ROW(INDIRECT("a1:a"&MAX(LEN(SPLIT(TEXTJOIN("",1,B1:B),"0")))))), "0"","";;"))),",")) },2,),0),B1:B<>"")
D1中的#2。对于结果:
=FILTER(IF(B1:B=0,"",VLOOKUP(C1:C,{row(INDIRECT("a1:a"&COUNTIF(B1:B,1))) , VLOOKUP(MOD(ROW( INDIRECT("a1:a"&COUNTIF(B1:B,1)) )-1,COUNTA(A1:A))+1,{ROW(A1:A)-row(A1)+1,A1:A},2,)},2,)),B1:B<>"")
参考文献:
答案 1 :(得分:0)
您可以在帮助器列中最轻松地完成
=if(B4=1,if(B3=0,0,mod(E3+1,4)),"")
然后从E4开始
=if(E4<>"",index(A$4:A$7,E4+1),"")
从F4开始。
这是使用单个非数组公式执行此操作的一种方法:
=IF(B4=1,INDEX(A$4:A$7,MOD(SUM(B4:INDEX(B:B,MAX(INDEX(IF(B$4:B4=0,ROW(B$4:B4)),0)),0))-1,4)+1),"")
在(说)G4中拉下。
所有这两个假设都假设B列中的序列以零开头,如果不是这种情况,则需要进行调整。
数组公式也是可能的:
=ArrayFormula(if(B4:B=1,vlookup(mod(sumif(row(B4:B),"<="&row(B4:B),B4:B)-sumif(row(B4:B),"<="&vlookup(row(B4:B),if(B4:B=0,row(B4:B)),1),B4:B)-1,4)+4,{row(4:7),A4:A7},2,false),""))
编辑
打开/关闭数据的第一行包含1时,使其工作最简单的方法可能是在B列中包含标题行,并使用n()将其视为零,因此帮助程序列公式为< / p>
=if(B4=1,if(n(B3)=0,0,mod(E3+1,4)),"")
非数组公式为
=IF(B4=1,INDEX(A$4:A$7,MOD(SUM(B4:INDEX(B:B,MAX(INDEX(IF(n(B$3:B4)=0,ROW(B$3:B4)),0)),0))-1,4)+1),"")
数组公式可以正常使用。这是出于偶然的原因,如果第二行Vlookup如果当前行之前的B列中没有零,则将失败并显示#N / A,但是当将其传递给Sum时,如果您得到的是所需的零结果,则< / p>