excel函数吧 关注:9,115贴子:14,720

回复:我的Excel学习日记

取消只看楼主收藏回复

方法1:
=SUMPRODUCT(($B$2:$B$17=B2)*($C$2:$C$17>C2))+1
这个办法无法解决同分名次叠加的问题,会跳名次。


来自iPhone客户端50楼2021-05-19 17:48
回复
    方法2:
    =SUMPRODUCT(($B$2:$B$17=B2)*($C$2:$C$17>=C2)/COUNTIFS($B$2:$B$17,$B$2:$B$17,$C$2:$C$17,$C$2:$C$17))
    完美解决了同分跳名次的问题,妙就妙在,它用分子筛选条件,
    又用分数除以人数的办法,把每一次商当作一个整体来求排名,这样就避免了人头数


    来自iPhone客户端51楼2021-05-19 17:50
    回复
      方法3:
      =COUNTIFS($B$2:$B$17,B2,$C$2:$C$17,">"&C2)+1
      数数法和方法1一样,同分会跳名次,
      不过 ">"&B2 这种表达很有用,完美保留了单元格灵活变动性,又结合了等式的特性


      来自iPhone客户端52楼2021-05-19 17:51
      回复
        下面疑问来了:如果没有B列作辅助,只有A列的情况下,又应该如何写公式呢。@Leon大神😺


        来自iPhone客户端53楼2021-05-19 17:52
        回复
          今天分离一个按条件求和的例子,在筛选的基础上,多了一个“前三次出现”条件。


          来自iPhone客户端54楼2021-05-22 10:55
          回复
            =SUMPRODUCT(($A$2:$A$30=D2 )*(ROW($A$2:$A$30)<=SMALL(IF($A$2:$A$30=D2,ROW($A$2:$A$30)),3))*($B$2:$B$30))
            先用IF函数,返回前三次出现对应是哪几行,然后用SMALL函数找到临界点,这样就能制造出一个“前三次出现”的条件来。


            来自iPhone客户端55楼2021-05-22 10:57
            回复
              值得一说的是,IF函数返回的,也是首次满足条件的行号,所以要用三键数组的办法,才会列出全部满足条件的行号出来。


              来自iPhone客户端56楼2021-05-22 10:58
              回复
                今天学到一个countif和maxifs结合填等差数值的例子。


                来自iPhone客户端57楼2021-05-23 21:52
                回复
                  =IF(B2<>"",B2,COUNTIF($A$2:A2,A2)*MAXIFS($B$2:B2,$A$2:A2,A2))
                  这个公式很巧妙,首先是用IF判断是不是第一次出现,第一次出现自己就带有底价
                  其次,判断第二次出现时,也就是翻倍的时候 ,这个翻倍的倍数,正是自己出现的次数


                  来自iPhone客户端58楼2021-05-23 21:53
                  回复
                    至于如何对应到底价,用MAXIFS()来求,满足条件的返回对应值,这里用MINIFS()也可以
                    COUNTIF()用来计出现次数,MAXIFS()用来返回新出现的名字它的底价
                    两者相乘得出新的价值


                    来自iPhone客户端59楼2021-05-23 21:54
                    回复
                      值得注意的是,像这种越往下次数越多的,公式都是固定起始位置,不锁定结尾
                      这样才能对新出现的单元格作最准确的判断。


                      来自iPhone客户端60楼2021-05-23 21:54
                      回复
                        今天学习了一下SUMPRODUCT和OFFSET结合数数。很多时候表格设置不合理,需要用到OFFSET来制造自己想要的列。


                        来自iPhone客户端61楼2021-05-25 18:04
                        回复
                          先用MATCH函数找到指定行,
                          用OFFSET来返回往后的三个饮料情况,
                          制造出两组新数列,相当于行列转置
                          再套用SUMPRODUCT,就容易找结果了
                          OFFSET在这里最大作用就是把行转成了列


                          来自iPhone客户端62楼2021-05-25 18:07
                          回复
                            今天记录一个TEXT函数按条件求和的例子。先上公式:
                            B2=SUMPRODUCT(TEXT(TODAY()-TEXT($D$21:$D$116,"0-00-00;;;!0"),"["&LEFTB(B$1,5)&"]1;!0")*($B$21:$B$116=$A2)*$C$21:$C$116)


                            来自iPhone客户端63楼2021-05-28 23:05
                            回复
                              要求:按D列(D21开始)的时间,分别算一年内各销售的业绩总和一年前的业绩总和
                              关键:D列的日期并非日期格式,需要先把它们换成日期格式,才可以与今天的日期进行运算
                              分解:
                              转换D列数值20190331为日期2019-03-31:E5=TEXT($D$21:$D$116,"0-00-00;;;!0"),可以把这一列数值变成和日期一样的格式进行加减判断,还有个别的单元格里有文本“-”,要把它们转换成数字0
                              把减到的天数转换成1或0的数组,因为SUMPRODUCT要求数组内不能有文本等错误因素,文本就要转为数字0,把日期转成1,构造1或0的一组数组,方便排除0的运算
                              抽取B1和C1的天数并且制造条件[<=365]1;!0:"["&LEFT(B$1,5)&"]1;0",这一段作为TEXT的第二参数,没条件的时候不用中括号,有条件的时候要。
                              考虑到B1和C1条件参数的字节不一致,用LEFTB不用LEFT,可以向右拖动,中括号外和IF的二三参一样,中间用“;"隔开,这样构造了一组1和0的数组,首消时间在一年内的返回1,一年外的返回0,这个是天数不再是日期。
                              这种做法不用另外写辅助的单元格给条件函数,省下了一个条件函数


                              来自iPhone客户端64楼2021-05-28 23:10
                              回复