求助,解决Excel2003问题,非常感谢

谢谢
2024-12-13 16:56:37
推荐回答(5个)
回答1:

 

B2输入数组公式(用Shift+Ctrl+Enter输入):

=IF(AND(COUNTIF(A$1:A2,1),A2>1,COUNTIF(INDIRECT("A"&ROW()&":A"&MIN(IF(A2:A$1000=1,ROW(A2:A$1000),1000))),">1")=1),COUNTIF(INDIRECT("A"&MAX(IF(A$1:A2=1,ROW(A$1:A2),0))&":A"&MIN(IF(A2:A$1000=1,ROW(A2:A$1000),1000))),">1"),"")

下拉复制

看来还有点复杂,其实复杂的公式是由简单的公式合成的,下面我描述一下这个公式的形成过程:

在C2输入公式:

=COUNTIF(A$1:A2,1)

用来计算从A列第一个单元格起到A列本行单元格共有几个是1

在D2输入数组公式(用Shift+Ctrl+Enter输入):

=MAX(IF(A$1:A2=1,ROW(A$1:A2),0))

用来计算从A列第一个单元格起到A列本行单元格中取值为1的单元格的行号的最大值

在E2输入数组公式(用Shift+Ctrl+Enter输入):

=MIN(IF(A2:A$1000=1,ROW(A2:A$1000),1000))

用来计算从A列本行单元格到A1000中取值为1的单元格的行号和1000之间的最小值,此处假定你的A列数据不超过1000行,如若不然可设置更大的数。

在F2输入公式:

=COUNTIF(INDIRECT("A"&ROW()&":A"&E2),">1")

用来计算从A列本行单元格到其后第一次出现1的单元格(若不存在就到A1000)之间有几个取值大于1的单元格

在G2输入公式:

=IF(AND(C2,A2>1,F2=1),COUNTIF(INDIRECT("A"&D2&":A"&E2),">1"),"")

决定在什么情况下显示A列两个1之间取值大于1的单元格个数,即所求的。

选定C2:G2下拉,在G列就得到所求的结果了。

B2的公式是在G2的公式中依次代人F2、E2、D2、C2的公式后得到。

回答2:

B3输入数组公式:
=IF(AND(COUNTIF(A4:A$1000,">1")=0,A3),COUNTIF(OFFSET(A$2,MAX(IF(A$2:A3=1,ROW(A$2:A3)))-1,):A3,">1"),IF(COUNTIF(A$2:A3,1),IF((INDEX(A:A,MIN(IF(A4:A$1000,ROW(A4:A$1000))))=1)*(A3>1),COUNTIF(OFFSET(A$2,MAX(IF(A$2:A3=1,ROW(A$2:A3)))-1,):A3,">1"),""),""))

将公式往下复制。
因为要判断的条件太多,一时间想不到更简单的方法。

回答3:

b2=IF(COUNTIF(A$1:A1,1),IF(COUNTIF(A2:A100,">1")=1,COUNTIF(OFFSET(A$1,LOOKUP(1,0/(A$1:A1=1),ROW(A$1:A1)),ROW()-LOOKUP(1,0/(A$1:A1=1),ROW(A$1:A1))),">1"),IF(COUNTIF(OFFSET(A2,,,MATCH(1,A2:A100,0)),">1")=1,COUNTIF(OFFSET(A$1,LOOKUP(1,0/(A$1:A1=1),ROW(A$1:A1)),ROW()-LOOKUP(1,0/(A$1:A1=1),ROW(A$1:A1))),">1"),"")),""),下拉,要想简单必须加辅助列,把问题作为内容(邮件主题一定要包含“excel”,本人以此为依据辨别非垃圾邮件,以免误删)、excel样表文件(请特别注意:要03版的(如果是03以后的,把文件“另存为”一下,类型框可以选择03的),把现状和目标效果表示出来)作为附件发来看下 yqch134@163.com

回答4:

需要辅助列列完成
比如:
E2=SMALL(IF($A$1:$A$120=1,ROW($A$1:$A$120),""),ROW(A1))
数组下拉
F2=COUNTIF(INDIRECT("A"&E2&":"&"A"&E3),">1")
下拉

回答5:

再简单那也是复杂的