Excel精英培训网

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

vba求助,已有狭义合并代码,求相似行智能批量广义合并代码!!!

[复制链接]
发表于 2017-2-22 21:47 | 显示全部楼层 |阅读模式
本帖最后由 youxianwei 于 2017-2-23 15:16 编辑

vba求助,已有狭义合并代码,求相似行智能批量广义合并代码!!!,【半百】的代码只能正确执行一次,第二次重复执行会将主列不重复的单元格误删,求大家继续改进。

vba求助,已有狭义合并代码,求相似行智能批量广义合并代码!!!

vba求助,已有狭义合并代码,求相似行智能批量广义合并代码!!!
vba求助,已有狭义合并代码,求相似行智能批量广义合并代码!!!2.jpg

vba求助,已有狭义合并代码,求相似行智能批量广义合并代码!!!

vba求助,已有狭义合并代码,求相似行智能批量广义合并代码!!!

vba求助,已有狭义合并代码,求相似行智能批量广义合并代码!!!.rar

35.69 KB, 下载次数: 0

vba求助,已有狭义合并代码,求相似行智能批量广义合并代码!!!

 楼主| 发表于 2017-2-22 23:47 | 显示全部楼层
本帖最后由 youxianwei 于 2017-2-23 15:17 编辑

excel home 论坛已有高手解答,特此分享~

Option Explicit

Sub test()

    Dim A, B, d, i%, j%, s, x, 公式变量
   
    Sheets(1).Select
   
    公式变量 = Range("e3").Formula
   
    A = Range("a2:m" & Range("a65536").End(xlUp).Row)  '''''''''''''''必须是a2,a3则第3行不识别
   
    ReDim B(1 To UBound(A), 1 To UBound(A, 2))
    Set d = CreateObject("scripting.dictionary")
    For i = 2 To UBound(A)
        x = A(i, 5)    'key
        If x <> "" Then
            If d.exists(x) Then
                '已存在
                For j = 6 To UBound(A, 2)
                    B(d(x), j) = IIf(B(d(x), j) = "", A(i, j), B(d(x), j) & IIf(A(i, j) = "", "", "," & A(i, j)))      '''''''第二次执行会误删!!!!!
                Next j
            Else
                '不存在
                s = s + 1: d(x) = s
                For j = 1 To UBound(A, 2)
                    B(s, j) = A(i, j)
                Next j
            End If
        End If
    Next i

    Sheets(2).Select
    Sheets(2).Range("a3:z1000").Clear
    [a3].Resize(s, UBound(B, 2)) = B
   
   
    Range("e3") = 公式变量
    Range("e3").Resize(Range("e65536").End(xlUp).Row).FillDown
   
End Sub
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-1 17:52 , Processed in 0.261386 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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