位置:首頁(yè) > 軟件操作教程 > 辦公軟件 > Excel > 問(wèn)題詳情

如何將Excel工作薄中區(qū)域內(nèi)的值按出現(xiàn)次數(shù)提取到同一列?

提問(wèn)人:周麗平發(fā)布時(shí)間:2021-08-19

對(duì)于Excel工作薄中一個(gè)包含重復(fù)數(shù)值的區(qū)域,要將其中的數(shù)值按出現(xiàn)次數(shù)的多少提取到一列,通??梢杂冒琈ODE函數(shù)的數(shù)組公式。例如數(shù)值區(qū)域?yàn)锳1:E10,要將其中的數(shù)值提取到G列,如圖。

image.png

在G2中輸入:

=MODE(IF(COUNTIF($G$1:G1,A$1:E$10)=0,A$1:E$10))

公式輸入完畢按Ctrl+Shift+Enter結(jié)束,然后拖動(dòng)填充柄向下填充公式,直到出現(xiàn)“#N/A”為止。

受MODE函數(shù)的限制,該公式僅對(duì)數(shù)值有效,且不能提取只出現(xiàn)一次的數(shù)值。要將區(qū)域中所有的數(shù)據(jù)按出現(xiàn)次數(shù)提取到一列,可用VBA代碼來(lái)實(shí)現(xiàn)。如將下圖A1:E10區(qū)域中的文本按出現(xiàn)次數(shù)多少提取到G列:

image.png

按Alt+F11,打開(kāi)VBA編輯器,在代碼窗口中輸入下列代碼并運(yùn)行,即可G列得到按出現(xiàn)次數(shù)降序排序的文本,在H列得到對(duì)應(yīng)文本的出現(xiàn)次數(shù)。

Sub 按出現(xiàn)次數(shù)排序()

Dim d As Object

Dim Arr

Dim i As Integer, j As Integer

Application.ScreenUpdating = False

'提取不重復(fù)值并計(jì)算出現(xiàn)次數(shù)

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

說(shuō)明:如果文本出現(xiàn)的次數(shù)相同,將按先行后列的順序依次提取。

繼續(xù)查找其他問(wèn)題的答案?

回復(fù)(0)
返回頂部