Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
12
返回列表 发新帖
楼主: haeng

[已解决]求个VBA

[复制链接]
发表于 2013-11-17 18:23 | 显示全部楼层    本楼为最佳答案   
如果用的10,直接用10自带的去重复值。
  1. Sub tsst()
  2.     Dim arr, a, j As Byte, k As Byte
  3.     Dim arrCon
  4.     Dim arrA(1 To 65536, 1 To 1), lPos As Integer
  5.    
  6.     arr = ActiveSheet.UsedRange.Columns(2).Value
  7.     arrCon = Range(Range("c3"), Range("c3").End(xlToRight)).Value
  8.    
  9.     For i = LBound(arrCon, 2) To UBound(arrCon, 2)
  10.         arrCon(1, i) = Trim(arrCon(1, i))
  11.     Next

  12.     For Each a In arr
  13.         If Len(a) Then
  14.             For Each b In arrCon
  15.                 k = 0
  16.                 For j = 1 To Len(a)
  17.                     If InStr(b, Mid(a, j, 1)) Then k = k + 1
  18.                     If j = 2 And k = 0 Then Exit For
  19.                 Next
  20.                 If k > 1 Then
  21.                     lPos = lPos + 1
  22.                     arrA(lPos, 1) = "'" & a
  23.                 End If
  24.             Next
  25.         End If
  26.     Next
  27.    
  28.     If lPos Then
  29.         With Columns(1)
  30.             .Clear
  31.             .Cells(1, 1).Resize(lPos).Value = arrA
  32.             .RemoveDuplicates Columns:=1, Header:=xlNo
  33.         End With
  34.         MsgBox "完成"
  35.     End If
  36. End Sub
复制代码
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-6 20:17 , Processed in 0.299210 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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