亞寵展、全球寵物產業風向標——亞洲寵物展覽會深度解析
546
2025-04-04
將Excel工作薄中區域內的值按出現次數提取到同一列的方法
對于Excel工作薄中一個包含重復數值的區域,要將其中的數值按出現次數的多少提取到一列,通常可以用包含MODE函數的數組公式。例如數值區域為A1:E10,要將其中的數值提取到G列,如圖。
在G2中輸入:
=MODE(IF(COUNTIF($G:G1,A:E)=0,A:E))
公式輸入完畢按Ctrl+Shift+Enter結束,然后拖動填充柄向下填充公式,直到出現“#N/A”為止。
受MODE函數的限制,該公式僅對數值有效,且不能提取只出現一次的數值。要將區域中所有的數據按出現次數提取到一列,可用VBA代碼來實現。如將下圖A1:E10區域中的文本按出現次數多少提取到G列:
按Alt+F11,打開VBA編輯器,在代碼窗口中輸入下列代碼并運行,即可G列得到按出現次數降序排序的文本,在H列得到對應文本的出現次數。
Sub 按出現次數排序()
Dim d As Object
Dim Arr
Dim i As Integer, j As Integer
Application.ScreenUpdating = False
‘提取不重復值并計算出現次數
Set d = CreateObject("Scripting.Dictionary")
Arr = Range("A1:E10")
For i = 1 To UBound(Arr, 1)
For j = 1 To UBound(Arr, 2)
If Not d.Exists(Arr(i, j)) Then
d.Add Arr(i, j), 1
Else
d.Item(Arr(i, j)) = d.Item(Arr(i, j)) + 1
End If
Next
Next
‘輸出并排序
Range("G2").Resize(d.Count) = Application.Transpose(d.keys)
Range("H2").Resize(d.Count) = Application.Transpose(d.items)
Range("G2:H2").Resize(d.Count).Sort key1:=Range("H2"), Order1:=xlDescending
Set d = Nothing
Application.ScreenUpdating = True
End Sub
說明:如果文本出現的次數相同,將按先行后列的順序依次提取
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。