求一个固定表格中的公式:
得出第一列中最后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两åéèå³å¯
=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))
如图,在D列中输入1~10这10个数字,在E列中统计出各个数字对应出现的频率。
E1=COUNTIF(OFFSET(A$1,COUNT(A:A)-10,,10),D1)
下拉到E10
追问谢谢,有您的启发我应该能做出来了
追答实际的问题与提问并不是一回事?另外建议提问用清晰的截图(带行号和列标,必要时还要有上面的公式编辑栏——如回答你问题时的截图),而不是伤眼的照片。
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