如何使用Excel统计某电话号码有多少人打过
发布时间:2023-04-26 00:59:18
派出所的一个朋友在调查一起案件的时候,遇到了一个如题的问题,请我帮忙。由于要保密他不能提供原始数据,只是给我谈了一下要求。派出所的一个朋友在调查一起案件的时候,遇到了一个如题的问题,请我帮忙。由于要保密他不能提供原始数据,只是给我谈了一下要求。目前他们通过一个嫌疑犯的通话记录,从通话记录中又列入了n个新嫌疑犯,而且也得到每个嫌疑犯的通话记录。现在就要将这些通话记录进行统计,即同一个电话号码,每个嫌疑犯打了多少次,有多少个嫌疑犯同时打过同一个号码。
根据上述总结,Excel表如下:

图一:原始数据表
图二:统计结果表
上图说明:
图一:用户一、用户二、用户三、用户四正面的数字为模拟的电话号码;方向是指主叫还是被叫,没有什么意义。
图二:用户正面的数字是该电话所使用的次数,如果一个电话只被某一用户打过,这样就不统计,换句话说就是统计结果表中的电话号码至少被两个以上的用户打过。
解决的思路:
⒈ 此统计无法使用函数、数据透视表等普通的方法来解决。我采用了VBA编程来实现的统计。
⒉ 首先将所有用户的电话(不重复,重复的只取一次),提取出来存放到统计结果表中。这样结果表中的电话是唯一的。
⒊ 通过结果表的电话号码为基础,统计每个用户使用该号码的次数并将统计的结果存放到结果表该用户下。
⒋ 删除同一个电话号码被两个以下用户使用的行。
解决的方法:
⒈ 因为用户的数量是未知的,但从第2列开始是已经的,这样我们就可以通过循环来进行统计。循环的条件通过第1行从第2列开始,单元格不空。
⒉ 每个用户的电话号码循环与⒈类似
具体的程序源代码如下:
Private Sub CommandButton1_Click()
Sheets(2).Rows(2 & ":" & 65536) = ""
Sheets(2).Columns("B:IV") = ""
Dim Ls, i, j, Isa, k, yhs
Isa = False
i = 2
If Sheets(1).Cells(1, 2) = "" Then
MsgBox "没有用户,无法统计!", vbOKOnly + vbCritical, "错误提示"
Exit Sub
Else
Do While True
If Sheets(1).Cells(1, i) <> "" Then
Sheets(2).Cells(1, i) = Sheets(1).Cells(1, i)
i = i + 1
Else
Exit Do
End If
Loop
yhs = i - 1
End If
Ls = 2
Do While Sheets(1).Cells(1, Ls) <> ""
i = 2
Do While Sheets(1).Cells(i, Ls) <> ""
If Sheets(2).Cells(2, 1) = "" Then
Sheets(2).Cells(2, 1) = Sheets(1).Cells(i, Ls)
Else
j = 2: Isa = False
Do While Sheets(2).Cells(j, 1) <> ""
If Sheets(2).Cells(j, 1) = Sheets(1).Cells(i, Ls) Then Isa = True: Exit Do
j = j + 1
Loop
If Not Isa Then Sheets(2).Cells(j, 1) = Sheets(1).Cells(i, Ls)
End If
i = i + 1
Loop
Ls = Ls + 1
Loop
Ls = 2
Do While Sheets(2).Cells(1, Ls) <> ""
i = 2
Do While Sheets(2).Cells(i, 1) <> ""
j = 2: k = 0
Do While Sheets(1).Cells(j, Ls) <> ""
If Sheets(2).Cells(i, 1) = Sheets(1).Cells(j, Ls) Then k = k + 1
j = j + 1
Loop
If k <> 0 Then Sheets(2).Cells(i, Ls) = k
i = i + 1
Loop
Ls = Ls + 1
Loop
'===========================================
' 删除非同一电话多个用户使用的行
'===========================================
i = 2
Do While Sheets(2).Cells(i, 1) <> ""
j = 2: k = 0
Do While j <= yhs
If Sheets(2).Cells(i, j) <> "" Then k = k + 1
j = j + 1
Loop
If CInt(k) < 2 Then
Sheets(2).Rows(i).Delete Shift:=xlUp '删除i行
Else
i = i + 1
End If
Loop
'===========================================
MsgBox "统计完毕!", vbOKOnly + vbInformation, "系统提示"
Sheets(2).Select
End Sub


猜你喜欢
- 近期有部分用户在登录Microsoft帐户时遇到了一直登录不上,老是提示错误以及提示请重试的情况。那么针对这一问题应该如何解决呢?有需要的小
- 苹果今天向开发者发布了 iOS 13 GM 版,也就是 golden master 。很多升级的用户反映升级GM 版后黑暗模式基本
- Excel 2013中为数据区域添加背景图片的的方法1、启动Excel 2013并打开工作表,在“页面布局”选项卡的“页眉设置”组中单击“背
- 一、word中文字的删除方法:1、选取文字后,按键盘上的delete或Backspace键,删除被选文字2、光标置于文字中时,按键盘上的Ba
- 在win8.1系统中安装小米随身wifi驱动后,都不能正常启动,其实很简单的,首先下载小米随身WIFI驱动,点击即可安装,选择安装位置,依次
- 下图左侧A2:C10单元格区域为数据源,右侧为根据数据源制作的四象限散点图。从图中可以直观地看到所有事件在各个象限分布的总体情况。 
- 我们都知道,我们在使用电脑的各种软件和各种操作时,可以使用快捷键,熟悉之后,我们就可以提高自己的办公效率了。通常情况下,我们比较常用的软件和
- CPU即中央处理器,是计算机的核心部件,CPU的性能的好坏决定了整部计算机的性能。对于一些老旧笔记本,CPU实在是无法入眼,也难怪老旧笔记本
- 宏碁Acer 墨舞EX214是一款娱乐型便携笔记本电脑,采用了intel酷睿十一代i5处理器以及发烧级独立显卡,能够让用户们有着不错的游戏体
- 在Win8.1系统中,在运行窗口中输入CMD可以调出命令提示符窗口,通过输入命令能够进行一些系统相关操作,比如查看系统信息等。有网友在输入命
- 文语通是一款将文字转化成为语音的文档阅读软件,那你知道文语通怎么保存音频的吗?接下来我们一起往下看看文语通保存音频的方法吧。方法步骤1、首先
- 很多朋友都想知道U盘怎么恢复数据?关于这个问题,小编有一种方法可以帮你们解决。下面就U盘怎么恢复数据给出的图文操作流程。U盘数据如何恢复?误
- 要向WPS表添加下拉列表,请执行以下操作:首先,输入要在WPS表中使用的序列,如图所示:选择要在WPS表中使用下拉列表的单元格或单元格范围,
- 系统还原是系统自带的功能,但是随着Win7系统稳点性的增强很多用户都不在使用系统还原,所以很多用户都想关闭这个功能?那要怎么操作呢?一起来看
- 许多朋友经常会在PPT中插入一些与课题相关的视频文件,不过有些视频太长了,只有一部分才是自己想要的。。此时,许多用户就会在网上找一些视频裁剪
- 麦克风我们经常都会用到,最近有小伙伴反应,自己在使用麦克风的时候系统的麦克风声音太小了,这该如何调大呢?其实这个在设置里面进行简单的设置就可
- 最近有Win10系统用户反映,由于工作的原因,需要使用静态IP地址进行上网,可用户并不知道如何设置静态IP地址,为此非常苦恼。那么,Win1
- ATAN函数的功能是计算数字的反正切值。反正切值为角度,其正切值即等于参数的值。返回的角度值将以弧度表示,范围为-π/2~π/2。ATAN函
- 电脑用久了就容易出现一些这样或那样的毛病,比如说有用户遇到右键点击菜单栏没有反应的情况,左键却可以正常使用。那么我们应该如何解决呢?带着这份
- 大众喜爱win10系统是有原因的,它的设计更具有人性化,方方面面都考虑到了。例如Win10更新中新增了夜灯模式。在晚上使用电脑也可以保护眼睛