Excel精英培训网

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

这个怎么样以代码解决

[复制链接]
发表于 2013-12-29 23:01 | 显示全部楼层 |阅读模式
刚开始准备学V,就遇到这样的问题了,请帮忙处理一下
先谢谢了

EXCEL求教宏高手怎样实现这样的结果2.rar

105.26 KB, 下载次数: 40

发表于 2013-12-29 23:07 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2013-12-30 06:59 | 显示全部楼层
hwc2ycy 发表于 2013-12-29 23:07
没看出sheet1与sheet4有什么关系。

真抱歉,那是我自己做的,忘记清理了
表四应该是空白的,请烟花老师多多指导。
回复

使用道具 举报

发表于 2013-12-30 08:56 | 显示全部楼层
hongqiqqq 发表于 2013-12-30 06:59
真抱歉,那是我自己做的,忘记清理了
表四应该是空白的,请烟花老师多多指导。

Sheet3中显示C列的结果。(只留最大值和最小的日期值 如果最大日期值和最小日期值一样则仍旧留2两个值 如果日期有错误则显现该值得行号)
这个怎么理解呀?
最好举例说明。

回复

使用道具 举报

 楼主| 发表于 2013-12-30 20:48 | 显示全部楼层
hwc2ycy 发表于 2013-12-30 08:56
Sheet3中显示C列的结果。(只留最大值和最小的日期值 如果最大日期值和最小日期值一样则仍旧留2两个值 如 ...

就是删除重复的日期 然后留两个 一个最大日期 一个最小日期。
如果最大日期和最小日期一样,显示一个即可
如果日期有错误则显现该值得行号,意思是只要有错误,显示出来错误值所在的行,不用再找最大最小日期了
回复

使用道具 举报

发表于 2013-12-30 23:55 | 显示全部楼层
hongqiqqq 发表于 2013-12-30 20:48
就是删除重复的日期 然后留两个 一个最大日期 一个最小日期。
如果最大日期和最小日期一样,显示一个即可 ...

C列的日期没法理解,你最好来个效果图。
另外,你说的日期最大小最,是相对于同一单位么?
还有这个,如果日期有错误则显现该值得行号

回复

使用道具 举报

 楼主| 发表于 2013-12-31 07:25 | 显示全部楼层
hwc2ycy 发表于 2013-12-30 23:55
C列的日期没法理解,你最好来个效果图。
另外,你说的日期最大小最,是相对于同一单位么?
还有这个,如 ...

如果不考虑这一个问题,其他的能处理吗?
回复

使用道具 举报

发表于 2013-12-31 09:16 | 显示全部楼层
hongqiqqq 发表于 2013-12-31 07:25
如果不考虑这一个问题,其他的能处理吗?
  1. Sub test()

  2.     Dim arr, i As Long, str$
  3.     Dim objDic As Object
  4.     Set objDic = CreateObject("scripting.dictionary")

  5.     With Sheet1
  6.         .Columns(2).Copy Sheet2.Range("b1")
  7.         arr = .Range("d1:f" & .Cells(Rows.Count, "d").End(xlUp).Row)
  8.     End With
  9.    
  10.     For i = 1 To UBound(arr)
  11.         str = arr(i, 1)
  12.         If str Like "?*--*" Then
  13.             str = Left(str, InStr(arr(i, 1), "--") - 1)
  14.         ElseIf arr(i, 1) Like "--*" Then
  15.             str = ""
  16.         End If
  17.         str = Replace(myreplace(str), "郑州市", "")
  18.         arr(i, 1) = str
  19.         objDic(str) = ""
  20.     Next

  21.     With Sheet4
  22.         .Columns(1).Clear
  23.         '.Range("a1").Resize(UBound(arr)).Value = arr
  24.         '.Columns(1).RemoveDuplicates 1, xlNo
  25.         '10自带的去重复功能
  26.         If objDic.Count Then
  27.             .Range("b1").Resize(objDic.Count).Value = WorksheetFunction.Transpose(objDic.keys)
  28.         End If
  29.         '字典去重复,写在B1列了。
  30.     End With
  31.     Set objDic = Nothing
  32.     MsgBox "完成"
  33. End Sub

  34. Function myreplace(str) As String
  35.     Dim temp As String * 1
  36.     Dim i As Long
  37.     For i = 1 To Len(str)
  38.         temp = Mid(str, i, 1)
  39.         If Not temp Like "“,。?、·【】;!”"",.?[]!;" Then
  40.             myreplace = myreplace & temp
  41.         End If
  42.     Next
  43. End Function
复制代码
回复

使用道具 举报

 楼主| 发表于 2013-12-31 15:08 | 显示全部楼层
hwc2ycy 发表于 2013-12-30 23:55
C列的日期没法理解,你最好来个效果图。
另外,你说的日期最大小最,是相对于同一单位么?
还有这个,如 ...

这样的例子能说清楚吗

Book1.zip

14.17 KB, 下载次数: 2

回复

使用道具 举报

发表于 2013-12-31 19:39 | 显示全部楼层
hongqiqqq 发表于 2013-12-31 15:08
这样的例子能说清楚吗

实在看不明白你这效果是怎么来的。
日期分成3列又是怎么回事。



回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 07:02 , Processed in 0.360354 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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