有这张桌子;
我需要一个公式才能找到范围内数字的每个出现并按顺序排序,例如;
目前我有这个公式,但它根本不起作用:(
=ArrayFormula(QUERY({A1:F10,LEN(A1:F10)}, "select Col1, count(Col2) where Col2 > 0 group by Col1 order by count(Col2) desc",0))
答案 0 :(得分:1)
实际上我提出了一个复杂而漫长的答案:
这是截图:
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),""))
在第I列中使用此公式(拖放并填充至结束):
=IF(ROWS($1:1)>COUNT(H:H),"",INDEX(A:A,MATCH(LARGE(H:H,ROWS($1:1)),H:H,0)))
在列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中的公式)