用于计算Google表格单元格中每个数字出现次数的公式

时间:2015-01-01 20:32:10

标签: google-sheets excel-formula formulas

有这张桌子;

enter image description here

我需要一个公式才能找到范围内数字的每个出现并按顺序排序,例如;

enter image description here

目前我有这个公式,但它根本不起作用:(

=ArrayFormula(QUERY({A1:F10,LEN(A1:F10)}, "select Col1, count(Col2) where Col2 > 0 group by Col1 order by count(Col2) desc",0))

2 个答案:

答案 0 :(得分:1)

实际上我提出了一个复杂而漫长的答案:

这是截图:

enter image description here

1.a使用 MACRO

重新排列数据

首先,您需要将数据重新排列到一个列中,例如将它们全部放在A列中: 我是用这个宏做的:

Sub convertAllColumnstoONE()
Dim oneColumnHead As Range
Dim columnHeads As Range

With ThisWorkbook.Sheets("sheet1")
    Set columnHeads = Range(.Cells(1, 2), .Cells(1, .Columns.Count).End(xlToLeft))
End With

For Each oneColumnHead In columnHeads
    With oneColumnHead.EntireColumn
        With Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))
            .Parent.Cells(.Parent.Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(.Rows.Count, 1).Value = .Value
        End With
    End With
Next oneColumnHead
End Sub



.b使用公式重新排列数据 OR 您可以使用此公式将其重新排列到一个单独的列中,拖放并填充,直到您获得零:

=OFFSET($A$1,
MOD(ROW()-ROW($F$1),ROWS($A$1:$A$10)),
TRUNC((ROW()-ROW($F$1))/ROWS($A$1:$A$10)),1,1)



 2.计数和排名

然后将此公式放在列H 中(拖放并填充到结尾):

=IF(A1="","",IF(COUNTIF(A$1:A1,A1)=COUNTIF($A$1:$A$1000,A1),COUNTIF($A$1:$A$1000,A1)+(ROW()/1000),""))



  1. 以递减方式阅读和订购数据
  2. 第I列中使用此公式(拖放并填充至结束):

    =IF(ROWS($1:1)>COUNT(H:H),"",INDEX(A:A,MATCH(LARGE(H:H,ROWS($1:1)),H:H,0)))
    



    1. 计算频率
    2. 列J 中使用此公式(拖放并填充到结尾):

      =IF(I1="","",COUNTIF($A$1:$A$1000,I1))
      



      以下是demo worksheet downloadable
      Sheet1 列A使用VBA宏进行排序,并在 sheet2 它使用公式排序

      告诉我是否出了问题。

答案 1 :(得分:1)

在Google电子表格中,您可以尝试:

=query(if({1,1}, ArrayFormula(transpose(split(concatenate(A1:F&char(9)), char(9))))), "select Col1, Count(Col2) group by Col1 order by Count(Col2) desc")

Example spreadsheet(J1中的公式)