wps表格每行都基本都有重复的数字,如下图:

2025-03-25 00:03:54
推荐回答(3个)
回答1:

请按如下步骤操作:

  1. 点击 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. 其它注释我都写在代码注释中,如果有不明白的事项可以再次追问。

回答2:

  1. 统计不重复数量公式为:

    =SUMPRODUCT(1/COUNTIF(B1:S1,B1:S1))

  2. 如图所示:

回答3:

这个表格设计得有问题……本来您的需求是很简单的一个操作(删除重复值再count计数)就可以完成,现在这样的表格设计,就把简单的任务弄得复杂了。

建议重新设计下表格吧:第一行是列标题,之后的每一行都是一条完整的记录。