查找满足条件的n个结果

微信公众号原文

系统:Windows 7
软件:Excel 2010

  • 本文讲解如何查找满足条件的n个结果

动图展示

1.gif

Part 1:示例

  1. 有5个学员参加社团面试,同时也有5个评委。因为评委很忙,有些评委来的比较晚,有些有其它安排得提前离开,他们只评价了部分学员,具体评价结果如下图(评委任性)
  2. 每位学员的最终得分,为所有对其评价的评委打分的均分(如果有5个评委评价,则得分为5位均分;如果只有3个评价,那么得分为3位的均分)

评价信息e

1.png

最终得分

2.png

Part 2:如何实现

  1. 因为想将其整成一种通用的计算方式,即不管几个学员,几个评委,评委如何打分,都适用的程序
  2. 实现想到的是vlookupmatch函数,但是尴尬的是他们只能匹配第一个匹配的数据,那么怎么办?
  3. 这里提供一个比较笨的方法,遍历查找

Part 3:代码

Sub 计算均分()
    Set sht = ThisWorkbook.Worksheets("示例")
    maxRowOp = sht.Cells(Rows.Count, "F").End(xlUp).Row
    
    maxRowSearch = sht.Cells(Rows.Count, "B").End(xlUp).Row
    
    For i = 2 To maxRowOp Step 1
        aimName = sht.Cells(i, "F")
        inputCol = 8
        For k = 2 To maxRowSearch Step 1
            searchName = sht.Cells(k, "B")
            If aimName = searchName Then
                noteK = sht.Cells(k, "C")
                sht.Cells(i, inputCol) = noteK
                inputCol = inputCol + 1
                
            End If
        Next k
        
        '计算均分
        If inputCol > 8 Then  '表示有数据输入
            Set rngCal = sht.Range(sht.Cells(i, 8), sht.Cells(i, inputCol - 1))
            sht.Cells(i, 7) = Round(Application.Average(rngCal), 2)
        End If
    
    Next
    
End Sub

代码截图

3.png

Part 4:部分代码解读

  1. sht.Cells(Rows.Count, "B").End(xlUp).Row,获取打分评价最大行数,每一个评委对每一个学员的打分为一行记录,减少不必要的循环
  2. 本质上是对一个学员,都需要对所有打分记录循环一遍,对于本题来说,共有23个记录,相当于对每个学员,要循环判断23次,合计判断23*5=115。当数据非常大时,这种方法显的非常低效

Ps:各位同学有没有比较简单的方法呢?在百度上搜了下,好像也有一些组合公式之类的


  • 如需文中高清并可以无限放大路径图,可以文后留言留下邮箱,小编会发过去
  • 本文为原创作品,如需转载,可加小编微信号learningBin

更多精彩,请关注微信公众号
扫描二维码,关注本公众号

公众号底部二维码.jpg
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 2011年10月20日为什么糊涂 回家的路上,晓晓打了个喷嚏,妈妈有点紧张:“怎么了?”却说成了:“怎么办?”说完...
    羊羊羊羊汪阅读 9,486评论 2 14
  • 我从未想过我会有如此经历。我现在不敢相信这是真的。我与我妻子于去年春节结婚,之前我们已经恋爱8年。我们是大学同学,...
    Derrick龍仔_阅读 284评论 0 0
  • 亲子日记第二天。2018.3.23 今天回家后儿子出去和其他小朋友们玩去了,我马上就问他妈妈:孩子去哪里了?他妈妈...
    王健翌阅读 171评论 0 1
  • 我们自己也许就是这样简单而又充满爱
    想开小饭馆的人阅读 229评论 0 0
  • 如其所是教育 点击上方的蓝字关注更多 当一个人在说谎话的时候是最没有力量的,...
    大象姐说心理阅读 564评论 0 6