Excel精英培训网

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

[已解决]A中包含B,怎么能使A中的B被消除掉(B为A中的随意顺序)

[复制链接]
发表于 2016-3-24 16:00 | 显示全部楼层 |阅读模式
Dear 大神们

help help help           
A中包含B,怎么能使A中的B被消除掉(B为A中的随意顺序) 新增 Microsoft Excel 工作表.zip (6.75 KB, 下载次数: 11)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2016-3-24 16:33 | 显示全部楼层
本帖最后由 dsmch 于 2016-3-24 16:55 编辑
  1. Sub Macro1()
  2. Dim arr, brr, d, i&, j%
  3. Set d = CreateObject("scripting.dictionary")
  4. arr = Range("f1").CurrentRegion
  5. brr = Range("k1").CurrentRegion
  6. For i = 2 To UBound(brr)
  7.     x = Split(brr(i, 1), ",")
  8.     For j = 0 To UBound(x)
  9.         d(x(j)) = ""
  10.     Next
  11. Next
  12. For i = 2 To UBound(arr)
  13.     x = Split(arr(i, 1), ",")
  14.     p = ""
  15.     For j = 0 To UBound(x)
  16.         If Not d.exists(x(j)) Then p = p & "," & x(j)
  17.     Next
  18.     arr(i, 1) = Mid(p, 2)
  19. Next
  20. Range("a1").Resize(UBound(arr)) = arr
  21. End Sub
复制代码

新增 Microsoft Excel 工作表.rar

11.13 KB, 下载次数: 11

回复

使用道具 举报

发表于 2016-3-24 16:57 | 显示全部楼层    本楼为最佳答案   
  1. Sub 清除相同内容()
  2.     Dim arr, brr, i&, imax&, A, B, x, n&
  3.     imax = Cells(Rows.Count, 6).End(3).Row
  4.     arr = Range("f2:k" & imax)
  5.     ReDim brr(1 To UBound(arr), 1 To 1)
  6.     For i = 1 To UBound(arr)
  7.         A = arr(i, 1): B = Split(arr(i, 6), ",")
  8.         For n = 0 To UBound(B)
  9.             brr(i, 1) = Replace(Replace(A, B(n), ""), ",,", ",")
  10.             A = brr(i, 1)
  11.         Next
  12.             x = brr(i, 1)
  13.             If Left(x, 1) = "," Then x = Mid(x, 2)
  14.             If Right(x, 1) = "," Then x = Left(x, Len(x) - 1)
  15.             brr(i, 1) = x
  16.     Next
  17.     [n2].Resize(UBound(arr), 1) = brr
  18. End Sub
复制代码

新增 Microsoft Excel 工作表.rar

16.51 KB, 下载次数: 11

回复

使用道具 举报

 楼主| 发表于 2016-3-24 17:04 | 显示全部楼层
非常非常的感謝兩位大神啊{:091:}
回复

使用道具 举报

 楼主| 发表于 2016-3-25 09:59 | 显示全部楼层
sry660 发表于 2016-3-24 16:57

dear 大神

能不能在幫忙在原有的基础上在添加點程序。

效果是B为空的时候A也继续保留。也同样是在N竖列。

複本 複本 新增 Microsoft Excel 工作表.zip

7.39 KB, 下载次数: 5

回复

使用道具 举报

发表于 2016-3-25 10:18 | 显示全部楼层
a543770434 发表于 2016-3-25 09:59
dear 大神

能不能在幫忙在原有的基础上在添加點程序。
  1. Sub 清除相同内容()
  2.     Dim arr, brr, i&, imax&, A, B, x, n&
  3.     imax = Cells(Rows.Count, 6).End(3).Row
  4.     arr = Range("f2:k" & imax)
  5.     ReDim brr(1 To UBound(arr), 1 To 1)
  6.     For i = 1 To UBound(arr)
  7.         A = arr(i, 1): B = arr(i, 6)
  8.         If Len(B) Then
  9.             B = Split(arr(i, 6), ",")
  10.             For n = 0 To UBound(B)
  11.                 brr(i, 1) = Replace(Replace(A, B(n), ""), ",,", ",")
  12.                 A = brr(i, 1)
  13.             Next
  14.                 x = brr(i, 1)
  15.                 If Left(x, 1) = "," Then x = Mid(x, 2)
  16.                 If Right(x, 1) = "," Then x = Left(x, Len(x) - 1)
  17.                 brr(i, 1) = x
  18.         Else
  19.             brr(i, 1) = A
  20.         End If
  21.     Next
  22.     [n2].Resize(UBound(arr), 1) = brr
  23. End Sub
复制代码

新增 Microsoft Excel 工作表.rar

16.85 KB, 下载次数: 6

回复

使用道具 举报

 楼主| 发表于 2016-3-25 10:22 | 显示全部楼层
不知道怎么用什么激动的心情去感谢你{:091:}
This is really great。
回复

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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