发布网友
发布时间:2022-04-30 15:46
共3个回答
热心网友
时间:2022-06-26 16:53
请按如下步骤操作:
点击 WPS 表格顶部“视图”菜单,找到最右侧的“宏”目录,在下拉菜单中找到“录制宏”命令,如下图所示。
“录制宏”命令所在位置示意图
2. 在弹出的对话框中,点击“确定”开始录制宏。
开始录制宏操作
3. 无需进行其他操作,点击左下角方块按钮结束录制宏。
结束录制宏操作
4. 按 Alt + F8 或者按下图所示点击“查看宏”命令。
查看宏
5. 在查看宏的弹出框中选择“编辑”,如下图所示。
编辑按钮示意
6. 将如下内容复制到弹出的文本框中:
'----------- 注意!复制请从此处开始!--------------
Sub 统计不重复数字()
'
'宏
'统计不重复的数字,并删除重复的数字
'
'
Dim StartRow As Integer '从第几行开始
Dim StartCol As Integer '从第几列开始
Dim RowOrCol As Boolean 'True为行,即一行一行的计算有无重复值,反之,False为列
Dim ResultLocation As Integer '将计数数字存放在第几列(或行)上
Dim MoveIfDelete As Boolean '删除数据后是否前移补空位
'将上述值进行预设置
StartRow = 2
StartCol = 2
RowOrCol = True
ResultLocation = 1
MoveIfDelete = True
Dim OuNum As Integer '外部遍历总数
Dim InNum As Integer '内部遍历总数
Dim StartOuNum As Integer '起始外部遍历数
Dim StartInNum As Integer '起始内部遍历数
If RowOrCol Then
OuNum = ActiveSheet.UsedRange.Rows.Count + ActiveSheet.UsedRange.Row - 1
InNum = ActiveSheet.UsedRange.Columns.Count + ActiveSheet.UsedRange.Column - 1
StartOuNum = StartRow
StartInNum = StartCol
Else
OuNum = ActiveSheet.UsedRange.Columns.Count + ActiveSheet.UsedRange.Column - 1
InNum = ActiveSheet.UsedRange.Rows.Count + ActiveSheet.UsedRange.Row - 1
StartOuNum = StartCol
StartInNum = StartRow
End If
'初始化计数器
Dim k As Integer '外部遍历计数
Dim i As Integer '内部遍历计数 1
Dim j As Integer '内部遍历计数 2
Dim Num As Integer '内部不重复数字数量计数
If RowOrCol Then
For k = StartOuNum To OuNum
Num = 0
For i = StartInNum To InNum
For j = StartInNum To InNum
If Cells(k, j) = Cells(k, i) And Not i = j Then
Cells(k, j).ClearContents '清除单元格内容
End If
Next
If IsNumeric(Cells(k, i)) And Not Cells(k, i) = "" Then
Num = Num + 1
If MoveIfDelete Then
If Not StartInNum + Num - 1 = i Then
Cells(k, StartInNum + Num - 1) = Cells(k, i)
Cells(k, i).ClearContents '清除单元格内容
End If
End If
End If
Next
Cells(k, ResultLocation) = Num
Next
Else
For k = StartOuNum To OuNum
Num = 0
For i = StartInNum To InNum
For j = StartInNum To InNum
If Cells(j, k) = Cells(i, k) And Not i = j Then
Cells(j, k).ClearContents '清除单元格内容
End If
Next
If IsNumeric(Cells(i, k)) And Not Cells(i, k) = "" Then
Num = Num + 1
If MoveIfDelete Then
If Not StartInNum + Num - 1 = i Then
Cells(StartInNum + Num - 1, k) = Cells(i, k)
Cells(i, k).ClearContents '清除单元格内容
End If
End If
End If
Next
Cells(ResultLocation, k) = Num
Next
End If
End Sub
'----------- 注意!复制到此处结束!--------------
7. 点击执行按钮,执行宏。
执行按钮所在位置
8. 执行完成后,即可完成统计数字(不重复计数),并删除重复值的操作。
9. 如需保存宏请将 . xlsx 格式的另存为 .xlsm 格式的,以后便可再查看或者修改宏。
10. 其它注释我都写在代码注释中,如果有不明白的事项可以再次追问。
追问老师,复制内容里面的注释里面的文字和(’)这个符号要复制吗?还有就是 Dim StartRow As Integer '从第几行开始 和从第几列开始要填上对应的行列信息吗?
热心网友
时间:2022-06-26 16:54
统计不重复数量公式为:
=SUMPRODUCT(1/COUNTIF(B1:S1,B1:S1))
如图所示:
热心网友
时间:2022-06-26 16:54