【问题标题】:Formula to count each occurence of a number in a Google Sheet cells用于计算 Google 表格单元格中每个数字出现的公式
【发布时间】:2015-01-01 20:32:10
【问题描述】:

有这张桌子;

我需要一个公式,以便能够找到范围内数字的每次出现并按降序排列它们,例如;

目前我有这个公式,但它不能按需要工作:(

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

【问题讨论】:

  • 您能否提供您预期结果的屏幕截图?是否需要对它们进行降序排序,他们自己的数字?还是它们的出现次数?

标签: google-sheets excel-formula formulas


【解决方案1】:

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

=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 中的公式)

【讨论】:

  • 这是一个优雅的公式!谢谢..顺便说一句,你为什么使用splitconcatenate?我可以直接指定范围,例如'sheet_2014'!I2:I54.. 另外,您如何将结果单元格标题重命名为计数以外的名称?再次感谢:)
  • Concatenate() 和 split() 用于将所有数字放在一列中。恐怕它不会工作,否则。如果要重命名,则需要在末尾(结束双引号之前)添加: ...label Count(Col2) 'your_name_goes_here'。
【解决方案2】:

其实我想出了一个有点复杂和冗长的答案:

这里是截图:



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



1.b 使用公式重新排列数据 您可以使用此公式将其重新排列到一个单独的列中,向下拖动直到得到零:

=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. 按降序读取和排序数据

第一列中使用这个公式(向下拖动直到结束):

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



  1. 统计频率

J列中使用此公式(向下拖动直到结束):

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



这里是demo worksheet downloadable
Sheet1A 列使用 VBA 宏排序,并且在 sheet2 它是使用公式排序的

如果出现问题,请告诉我。

【讨论】:

  • 谢谢@AHCr :) .. 确实是一个漫长的过程,我认为可能会有更好/更简单的解决方案,谢谢!
猜你喜欢
  • 1970-01-01
  • 2020-07-31
  • 2021-04-24
  • 2020-06-04
  • 1970-01-01
  • 1970-01-01
  • 2022-11-27
  • 1970-01-01
  • 2019-10-05
相关资源
最近更新 更多