Excel 粗体顶部M列中最大的50%值

Excel 粗体顶部M列中最大的50%值,excel,vba,Excel,Vba,任务1:将M列中的数据从最大到最小排序(完成!) 任务2:粗体显示M列中最大50%的合计值 比如说,, 一组数据由M列中的1,2,3,4,5,6,7,8,9,10组成 让他们从大到小排序:10,9,8,7,6,5,4,3,2,1 =(总和($M$2:M3))计算最大到最小数字的累积总和 (0.5*求和(M:M))以计算求和值的一半=0.5*(10+9+8+7+6+5+4+3+2+1)=27.5 粗体从最大到最小的数据范围,其中这些数据范围的累计和大于或等于总和的一半(以3计算) 假设10+9+8

任务1:将M列中的数据从最大到最小排序(完成!)

任务2:粗体显示M列中最大50%的合计值

比如说,, 一组数据由M列中的1,2,3,4,5,6,7,8,9,10组成

  • 让他们从大到小排序:10,9,8,7,6,5,4,3,2,1

  • =(总和($M$2:M3))计算最大到最小数字的累积总和

  • (0.5*求和(M:M))以计算求和值的一半=0.5*(10+9+8+7+6+5+4+3+2+1)=27.5

  • 粗体从最大到最小的数据范围,其中这些数据范围的累计和大于或等于总和的一半(以3计算)

  • 假设10+9+8+7=34的累积和大于27.5,我只希望这些包含10,9,8,7的单元格范围用粗体表示

  • 我的代码运行得很好,但是,我不知道为什么在求和值的底部50%的值被加粗,而不是在求和值的顶部最大的50%


    需要帮助。

    所有学分归Shrivalabha.redij所有

    Sub Highlight_Top50()
    
        Dim CheckRange As Range
    
        With ActiveSheet
            Set CheckRange = .Range("M2:M" & .Cells(.Rows.Count, "M").End(xlUp).Row)
    
        End With
    
        On Error Resume Next
        Range("M1").Sort Key1:=Range("M2"), _
          Order1:=xlDescending, Header:=xlYes, _
          OrderCustom:=1, MatchCase:=False, _
          Orientation:=xlTopToBottom
    
    With CheckRange
        .FormatConditions.Delete
        .FormatConditions.Add Type:=xlExpression, formula1:="=(SUM($M$2:M3))>=(0.5*SUM(M:M))"
        With .FormatConditions(1)
            .Font.Bold = True
            .StopIfTrue = False
        End With
    End With
    
    End Sub
    
    子高亮显示\u Top50\u和\u 500K()
    变暗检查范围为范围
    使用ActiveSheet
    设置检查范围=.Range(“M2:M”和.Cells(.Rows.Count,“M”).End(xlUp.Row)
    以
    出错时继续下一步
    范围(“M1”)。排序键1:=范围(“M2”)_
    订单1:=xl降序,标题:=xlYes_
    OrderCustom:=1,MatchCase:=False_
    方向:=xlTopToBottom
    带支票范围
    .FormatConditions.Delete
    .FormatConditions.Add类型:=xlCellValue,运算符:=xlGreaterEqual,公式1:=“500000”
    带.FormatConditions(1)
    .Font.Bold=True
    .StopIfTrue=False
    以
    
    .FormatConditions.Add Type:=xlExpression,公式1:=“=(总和($M$2:M2)-0.99*M2)在这种特殊情况下需要的方法是


    =(总和($M2:M2)-0.99*M2)这是你今天第四次问这个问题吗?是的,先生,我离我想要的结果越来越近了。为了结案,我再澄清一次。对造成的任何干扰表示歉意。只需颠倒条件并检查公式1:=“(总和($M2:M2))@shrivallabha.redij谢谢!它起作用了!然而,又出现了1个问题,包含7的单元格未加粗,与公式不一致此条件
    =(总和($M$2:M2)-0.99*M2)
    
    Sub Highlight_Top50_AND_500K()
    
        Dim CheckRange As Range
    
        With ActiveSheet
            Set CheckRange = .Range("M2:M" & .Cells(.Rows.Count, "M").End(xlUp).Row)
    
        End With
    
        On Error Resume Next
        Range("M1").Sort Key1:=Range("M2"), _
          Order1:=xlDescending, Header:=xlYes, _
          OrderCustom:=1, MatchCase:=False, _
          Orientation:=xlTopToBottom
    
    With CheckRange
        .FormatConditions.Delete
        .FormatConditions.Add Type:=xlCellValue, Operator:=xlGreaterEqual, formula1:="500000"
        With .FormatConditions(1)
            .Font.Bold = True
            .StopIfTrue = False
        End With
        .FormatConditions.Add Type:=xlExpression, formula1:="=(SUM($M$2:M2)-0.99*M2)<=0.5*SUM(M:M)"
        .FormatConditions(.FormatConditions.Count).SetFirstPriority
        With .FormatConditions(1)
             .Font.Bold = True
             .StopIfTrue = False
        End With
    
    End With
    
    End Sub