Excel精英培训网

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

[已解决]在Y列提取上一行出现重复的数据,若多个数据用、号隔开,没有重复则显示为空

[复制链接]
发表于 2021-10-16 10:15 | 显示全部楼层 |阅读模式
本帖最后由 ruhong18 于 2021-10-16 10:18 编辑

在Y列提取上一行出现重复的数据,若多个数据用、号隔开
最佳答案
2021-10-16 12:55
  1. Sub 重复值()
  2. Dim ARR, BRR(), irow As Long, IR As Integer, CL As Integer, L As Integer
  3. irow = Range("C65535").End(xlUp).Row
  4. ARR = Range("C2:I" & irow)
  5. ReDim BRR(1 To irow)
  6. For IR = 2 To irow - 1
  7.     For CL = 1 To 7
  8.         If Application.CountIf(Range("C" & IR - 1 & ":I" & IR - 1), ARR(IR - 1, CL)) > 0 Then
  9.             L = L + 1
  10.                 If BRR(IR - 1) = "" Then
  11.                      BRR(IR - 1) = ARR(IR - 1, CL)
  12.                      Else
  13.                      BRR(IR - 1) = BRR(IR - 1) & "、" & ARR(IR - 1, CL)
  14.                End If
  15.         End If
  16.     Next
  17.     L = 0
  18. Next
  19. Range("Y2").Resize(irow) = Application.Transpose(BRR)
  20. End Sub
复制代码
受风林火山老师启发。

求助3.zip

8.19 KB, 下载次数: 3

发表于 2021-10-16 11:58 | 显示全部楼层
本帖最后由 风林火山 于 2021-10-16 12:25 编辑
  1. Sub 查找重复值()
  2.     Dim k As Long
  3.     For k = 2 To UBound(arr)
  4.         Call test(k)
  5.     Next k
  6. End Sub
  7. Sub test(irow As Long)
  8.     Dim k As Byte, i As Byte
  9.     For k = 3 To 9
  10.         For i = 3 To 9
  11.         If Cells(irow, k) = Cells(irow + 1, i) Then
  12.             If Cells(irow, 25) = "" Then
  13.                 Cells(irow, 25).Value = Cells(irow, k).Value
  14.             Else
  15.                 Cells(irow, 25).Value = Cells(irow, 25).Value & "、" & Cells(irow, k).Value
  16.             End If
  17.         End If
  18.         Next i
  19.     Next k
  20. End Sub
复制代码

评分

参与人数 1学分 +2 收起 理由
ruhong18 + 2 感谢帮助

查看全部评分

回复

使用道具 举报

发表于 2021-10-16 12:45 | 显示全部楼层

下载学习,然后发现你有个理解有误。只要同上一行比较,找看看有没有重复的,你的效果是同时和上一行与下一行一起比较 。
回复

使用道具 举报

发表于 2021-10-16 12:55 | 显示全部楼层    本楼为最佳答案   
  1. Sub 重复值()
  2. Dim ARR, BRR(), irow As Long, IR As Integer, CL As Integer, L As Integer
  3. irow = Range("C65535").End(xlUp).Row
  4. ARR = Range("C2:I" & irow)
  5. ReDim BRR(1 To irow)
  6. For IR = 2 To irow - 1
  7.     For CL = 1 To 7
  8.         If Application.CountIf(Range("C" & IR - 1 & ":I" & IR - 1), ARR(IR - 1, CL)) > 0 Then
  9.             L = L + 1
  10.                 If BRR(IR - 1) = "" Then
  11.                      BRR(IR - 1) = ARR(IR - 1, CL)
  12.                      Else
  13.                      BRR(IR - 1) = BRR(IR - 1) & "、" & ARR(IR - 1, CL)
  14.                End If
  15.         End If
  16.     Next
  17.     L = 0
  18. Next
  19. Range("Y2").Resize(irow) = Application.Transpose(BRR)
  20. End Sub
复制代码
受风林火山老师启发。

求助3.rar

12.65 KB, 下载次数: 0

评分

参与人数 1学分 +2 收起 理由
ruhong18 + 2 学习了

查看全部评分

回复

使用道具 举报

发表于 2021-10-16 12:59 | 显示全部楼层
心正意诚身修 发表于 2021-10-16 12:45
下载学习,然后发现你有个理解有误。只要同上一行比较,找看看有没有重复的,你的效果是同时和上一行与下 ...

是下一行和上一行比较,把重复值标到上一行相应的位置
回复

使用道具 举报

发表于 2021-10-16 13:05 | 显示全部楼层
心正意诚身修 发表于 2021-10-16 12:55
受风林火山老师启发。

想了好久,不知道咋用数组,学习了,老师厉害。
回复

使用道具 举报

发表于 2021-10-16 14:37 | 显示全部楼层
风林火山 发表于 2021-10-16 13:05
想了好久,不知道咋用数组,学习了,老师厉害。

哈哈。我也是个小菜鸟。刚入门的新手。
回复

使用道具 举报

发表于 2021-10-16 19:06 | 显示全部楼层
Sub demo()
   Set d = CreateObject("Scripting.Dictionary")
   a = Range([b1], [i1].End(4)): a(1, 1) = [y1]
   For i = 2 To UBound(a)
      For j = 2 To 8
         d(i & " " & a(i, j)) = 1
         If d(i - 1 & " " & a(i, j)) Then
            a(i, 1) = a(i, 1) & IIf(a(i, 1) > 0, "、", "") & a(i, j)
         End If
      Next
   Next
   [y1].Resize(UBound(a)) = a
End Sub


demo.rar

16.62 KB, 下载次数: 1

回复

使用道具 举报

 楼主| 发表于 2021-10-17 10:39 | 显示全部楼层
cutecpu 发表于 2021-10-16 19:06
Sub demo()
   Set d = CreateObject("Scripting.Dictionary")
   a = Range(, .End(4)): a(1, 1) = [y1] ...

你好版主,不知是2003版本原因还是,顿号出现乱码“*”,如图所示

点评

您好,我这边是繁体环境,您可以在您的环境重新输入一次「顿号」即可!  发表于 2021-10-17 12:34
回复

使用道具 举报

 楼主| 发表于 2021-10-17 13:38 | 显示全部楼层
ruhong18 发表于 2021-10-17 10:39
你好版主,不知是2003版本原因还是,顿号出现乱码“*”,如图所示

好的,谢谢您!辛苦您了!感恩,学习了~

评分

参与人数 1学分 +2 收起 理由
cutecpu + 2 不客气。祝顺心,南无 阿弥陀佛!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 17:43 , Processed in 1.438516 second(s), 16 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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