如图excel表格,第一列中向下不间断随机输入1~10的数字,

求一个固定表格中的公式:
得出第一列中最后10个数字按出现频率从高到低排列的一个数组

1.要统计的是a列中倒数10个数字中各数字出现的频率(比如现在填充到了A19,则统计的是A10到A19,若填充到A20,则统计的是A11到A20)
2、这个公式要放在一个固定的某个单元格里

如图,

C1公式:

=INDEX(MATCH(LARGE(COUNTIF($A:$A,ROW($1:$10))-ROW($1:$10)*10^(-4),ROW($1:$10)),COUNTIF($A:$A,ROW($1:$10))-ROW($1:$10)*10^(-4),),COLUMN(A1),)

数组公式,按CTRL+SHIFT+回车结束,右拉填充

C2公式:

=COUNTIF($A:$A,C1)

右拉填充

追问

谢谢亲,但你没仔细看题,要求

1.要统计的是a列中倒数10个数字中各数字出现的频率(比如现在填充到了A19,则统计的是A10到A19,若填充到A20,则统计的是A11到A20)
2、这个公式要放在一个固定的某个单元格里

追答

建议增加辅助列,如图,C,D列为辅助列

D2公式:

=COUNTIF(INDIRECT("A"&MATCH(9E+307,A:A)-9&":A"&MATCH(9E+307,A:A)),C2)

下拉填充

E2公式:

=SUBSTITUTE(LEFT(TEXT(SUM(MOD(MATCH(LARGE(D2:D11-ROW($2:$11)*10^(-4),ROW(INDIRECT("1:"&COUNTIF(D:D,">0")))),D2:D11-ROW($2:$11)*10^(-4),),10)*10^(COUNTIF(D:D,">0")-ROW(INDIRECT("1:"&COUNTIF(D:D,">0"))))),REPT("0!,",COUNTIF(D:D,">0"))),2*COUNTIF(D:D,">0")-1),0,10)

这是数组公式,按CTRL+SHIFT+回车结束

完后,把C,D两列隐藏即可

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-10-10
一个公式,在一个单元格中显示,共20位,每两位为一个数字,分别代表1到10,公式:
=TEXT(SUMPRODUCT(COUNTIF(OFFSET(A1,LOOKUP(,0/(A:A<>""),ROW(A:A))-10,,10,),ROW(1:5))*10^(10-ROW(1:5)*2)),REPT(0,10))&TEXT(SUMPRODUCT(COUNTIF(OFFSET(A1,LOOKUP(,0/(A:A<>""),ROW(A:A))-10,,10,),ROW(6:10))*10^(10-ROW(1:5)*2)),REPT(0,10))
第2个回答  2018-10-10

如图,在D列中输入1~10这10个数字,在E列中统计出各个数字对应出现的频率。

E1=COUNTIF(OFFSET(A$1,COUNT(A:A)-10,,10),D1)

下拉到E10

追问

谢谢,有您的启发我应该能做出来了

追答

实际的问题与提问并不是一回事?另外建议提问用清晰的截图(带行号和列标,必要时还要有上面的公式编辑栏——如回答你问题时的截图),而不是伤眼的照片。

第3个回答  2018-10-10
3个问题:
1、a列不足10个数如何处理?
2、频率一样,如何排序?
3、仅仅排序还是要体现次数?追问

谢谢亲,
1.不足10个数字,没有出现的数字则默认频率都为0(或者公式只要适应A列20以后的数字就行)
2.频率一样则按照自身大小顺序排列
3.仅按照出现次数从高到低排序

追答

在工作表名点右键,单击“查看代码”,复制粘贴下面的代码,关闭代码窗口,改动a列值,排序结果在b1显示,如果不想在b1显示,把代码方括号内的b1改为你想要的地址

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column > 1 Then Exit Sub
    Application.EnableEvents = False
    n = Cells(Rows.Count, 1).End(3).Row - 9
    arr = Cells(n, 1).Resize(10)
    Set d = CreateObject("scripting.dictionary")
    For i = 1 To 10
        d(arr(i, 1)) = d(arr(i, 1)) + 1
    Next
    Do While d.Count > 0
        n = 0
        b = 0
        For Each k In d.keys
            If d(k) > n Then
                n = d(k)
                b = k
            ElseIf d(k) = n Then
                If k > b Then b = k
            End If
        Next
        t = t & "," & b
        d.Remove (b)
    Loop
    [b1] = Mid(t, 2)
    Application.EnableEvents = True
End Sub

第4个回答  2018-10-10
代码能做吧,公式不知道!
第5个回答  2018-10-10
先做个记号,晚上如果有时间再看看。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网