以下是引用fyabc在2007-11-9 1:06:50的发言:看来这个解法是正确的,我试了几次,目前还没发现有问题.多谢各位老师的帮忙.再次感谢. WILLIN2000老师能否解释一下这种解法,我学过MMULT,但还是看不懂这个解法. 短信收到.解释如下: A2=INDEX(明细!$C:$C,MIN(IF(MMULT(N(明细!$B$2:$B$515={"买入","中签"}),{1;1})*(COUNTIF(A$1:A1,明细!$C$2:$C$515)=0),ROW($2:$515),65525)))&"" x=N(明细!$B$2:$B$515={"买入","中签"})就是B列中符合"买入"的项和符合"中签"的项,结果是多行2列数组,第一列符合"买入",第二列"中签". mmult(x,{1,1}),将第一列和第二列相加.生成多行一列数组,标记为1的就是满足至少一个条件. y=COUNTIF(A$1:A?,明细!$C$2:$C$515),就是C列中各单元格含A$1:A?单元格中内容的个数,当然C列的一个单元格不可能含多个A$1:A?的内容,但只要A$1:A?有一个该C列的单元格就是>0, y=0,就是A$1:A?中没有出现过.这样就得到不含已经出现过的. 所以z=mmult(x,{1,1}*{y=0)就是符合含"买入","中签"并还没列出的单元格, if(z,row(..),65535)就是它们的所在行数(不符合的行数取65535), min(z)即第一个符合条件的行号. u=index(c:c,min(z))得到该单元格内容, 当没有一个符合时 if(z,row(..),65535)的结果就是全部是65535.这样min(z)是65535, index(c:c,min(z))得到c列65535行的内容为0, u&""结果为"". |