问题:Excel 中如何求众数?答案:使用“MODE”函数使用数据透视表使用宏

Excel中求众数
众数是数据集中出现频率最高的数值。在Excel中,有多种方式可以求众数。
方法一:使用“MODE”函数
-
步骤:
- 选择要计算众数的单元格范围。
- 在空白单元格中输入公式:=MODE(单元格范围)
- 按回车键。
方法二:使用数据透视表
-
步骤:
- 选中数据表。
- 单击“插入”选项卡,然后单击“数据透视表”。
- 在“创建数据透视表”对话框中,选择要计算众数的字段。
- 拖放该字段到“值”字段区域。
- 右键单击“值”字段,然后选择“值显示选项”。
- 在“值显示选项”对话框中,选择“显示为”。
- 从“显示值”列表中选择“众数”。
方法三:使用宏
-
步骤:
- 按住“Alt”键,然后依次按“F8”和“3”键。
- 在宏宏对话框中,选择“模块”。
- 复制和粘贴以下代码:
Sub Mode()
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim l As Integer
Dim arr() As Variant
Dim v As Variant
'读取数据范围
arr = Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row).Value
'创建众数组
j = 0
ReDim arr2(1 To UBound(arr))
For i = 0 To UBound(arr)
For k = i + 1 To UBound(arr)
If arr(i, 1) = arr(k, 1) Then
j = j + 1
arr2(j) = arr(i, 1)
End If
Next k
Next i
'排序众数组
For i = 1 To UBound(arr2)
For k = i + 1 To UBound(arr2)
If arr2(i) > arr2(k) Then
l = arr2(i)
arr2(i) = arr2(k)
arr2(k) = l
End If
Next k
Next i
'返回最大出现次数的数组
For i = 1 To UBound(arr2)
If j = 1 Then
v = arr2(i)
ElseIf arr2(i) <> arr2(i - 1) Then
If k < j Then
k = j
v = arr2(i - 1)
End If
j = 1
Else
j = j + 1
End If
Next i
End Sub-
使用方法:
- 在 VBA 编辑器中运行宏。
- 结果将显示在所选单元格中。











