Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2321|回复: 6

vba中按指定电话号查找该手机号最近一次通话时间,和最早一次通话时间。

[复制链接]
发表于 2016-12-19 14:10 | 显示全部楼层 |阅读模式
本帖最后由 爱疯 于 2016-12-22 11:09 编辑

求老师指导,自己写了半天也没写对,小弟新人

vba中按指定电话号,在表格通话详单中查找该手机号最近一次通话时间,和最早一次通话时间。

   

汇总副本.zip

378.79 KB, 下载次数: 10

表格

 楼主| 发表于 2016-12-19 14:13 | 显示全部楼层
数组还没理解,只是简单了解了一下。
回复

使用道具 举报

发表于 2016-12-19 14:33 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2016-12-19 14:52 | 显示全部楼层
因为拨入的手机号会有重复的,表格中是随机编写的手机号,没有重复的,但实际是会有的,是需要查找的,已选定的手机号码在通话详单哪最近的一次通话时间和最早一次通话时间,换言言之,就是查找该手机号在通话详单内的时期的最大值和最小值。
回复

使用道具 举报

发表于 2016-12-19 16:43 | 显示全部楼层
第一次通話..用MATCH..最後一次通話用LOOKUP.函數.純尾湊熱鬧.
回复

使用道具 举报

发表于 2016-12-19 16:48 | 显示全部楼层
循环进行:
   某一号码,如果是第一次出现,
         则最早通话、最晚通话都等于当前通话时间
   否则
         如果当前时间早于最早通话,则最早通话等于当前时间
         如果当前时间晚于最晚通话,则最晚通话等于当前时间
回复

使用道具 举报

发表于 2016-12-22 13:36 | 显示全部楼层
好象在你的文件里面出现“该部件的许可证信息没有找到。。。。。”,所以代码未测试。
  1. Sub tj()
  2.     arr = Sheets("通话详单").[a1].CurrentRegion
  3.     Set d1 = CreateObject("scripting.dictinary")     '最晚时间
  4.     Set d2 = CreateObject("scripting.dictinary")
  5.     For i = 2 To UBound(arr)
  6.         sj = arr(i, 6): hm = arr(i, 3)
  7.         If d1(hm) < sj Then d1(hm) = sj      '最晚
  8.         If Not d2.exists(hm) Then
  9.             d2(hm) = sj
  10.         ElseIf d2(hm) > sj Then      '最早
  11.             d2(hm) = sj
  12.         End If
  13.     Next
  14.         
  15.     arr = Sheets("统计").[a1].CurrentRegion
  16.     For i = 2 To UBound(arr)
  17.         hm = arr(i, 2)
  18.         arr(i, 7) = d2(hm)
  19.         arr(i, 8) = d1(hm)
  20.     Next
  21.     Sheets("统计").[a1].CurrentRegion = arr
  22. End Sub
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-29 10:22 , Processed in 0.546251 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表