Excel精英培训网

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

[已解决]请哪位高手帮助修改代码。急急!!!

[复制链接]
发表于 2013-6-10 10:07 | 显示全部楼层 |阅读模式
把工作表1中所有重复行数最多的行选出来填在工作表2中。表格内容选少可以执行操作,但内容选多就不能执行操作,不知什么原因,请哪位高手帮帮忙。在工作表里举的有例子。谢谢!
最佳答案
2013-6-10 11:17
Private Sub 选相同_Click()
Range("a1:m40000") = ""
Dim sh As Worksheet
Dim d As Object, sr As String
Set sh = Sheets("1")
Set d = CreateObject("scripting.dictionary")
k = 0
For x = 1 To 7703
    sr = ""
    For y = 1 To 10
        sr = sr & "-" & Replace(sh.Cells(x, y), " ", "")
    Next y
    If sr <> "----------" Then
        d(sr) = d(sr) + 1
    End If
Next x
arr = d.keys
arr1 = d.items
m = Application.Max(arr1)
For x = 0 To UBound(arr1)
If arr1(x) = m Then
   k = k + 1
   arr2 = Split(arr(x), "-")
   For y = 1 To 10
    Cells(k, y) = arr2(y)
   Next y
End If
Next x
End Sub

请哪位高手帮助修改代码.rar

102.22 KB, 下载次数: 12

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-6-10 11:17 | 显示全部楼层    本楼为最佳答案   
Private Sub 选相同_Click()
Range("a1:m40000") = ""
Dim sh As Worksheet
Dim d As Object, sr As String
Set sh = Sheets("1")
Set d = CreateObject("scripting.dictionary")
k = 0
For x = 1 To 7703
    sr = ""
    For y = 1 To 10
        sr = sr & "-" & Replace(sh.Cells(x, y), " ", "")
    Next y
    If sr <> "----------" Then
        d(sr) = d(sr) + 1
    End If
Next x
arr = d.keys
arr1 = d.items
m = Application.Max(arr1)
For x = 0 To UBound(arr1)
If arr1(x) = m Then
   k = k + 1
   arr2 = Split(arr(x), "-")
   For y = 1 To 10
    Cells(k, y) = arr2(y)
   Next y
End If
Next x
End Sub

评分

参与人数 1 +3 收起 理由
ymq123 + 3

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2013-6-10 17:47 | 显示全部楼层
su45 发表于 2013-6-10 11:17
Private Sub 选相同_Click()
Range("a1:m40000") = ""
Dim sh As Worksheet

你好:还麻烦你一下:在工作表1中又另加一个表格,把它们最多相同行同时选出放在工作表2中,这时代码不正常运行,请修改。谢谢!
Private Sub 选相同_Click()
Range("a1:m40000") = ""
Dim sh As Worksheet
Dim d As Object, sr As String
Set sh = Sheets("1")
Set d = CreateObject("scripting.dictionary")
k = 0
For Z = 0 To 1
For x = 1 To 7703
    sr = ""
    For y = 1 To 10
        sr = sr & "-" & Replace(sh.Cells(x, y + 14 * Z), " ", "")
    Next y
    If sr <> "----------" Then
        d(sr) = d(sr) + 1
    End If
Next x
arr = d.keys
arr1 = d.items
m = Application.Max(arr1)
For x = 0 To UBound(arr1)
If arr1(x) = m Then
   k = k + 1
   arr2 = Split(arr(x), "-")
   For y = 1 To 10
    Cells(k, y + 14 * Z) = arr2(y)
   Next y
End If
Next x
Next Z
End Sub

回复

使用道具 举报

发表于 2013-6-10 18:33 | 显示全部楼层
你把增加的东东,重新开个帖子,提供附件及说明!
回复

使用道具 举报

 楼主| 发表于 2013-6-10 22:02 | 显示全部楼层
su45 发表于 2013-6-10 18:33
你把增加的东东,重新开个帖子,提供附件及说明!

你好:我的的帖子已经发了请帮助修改。谢谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-21 09:55 , Processed in 0.137652 second(s), 16 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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