Excel精英培训网

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

[已解决]求大侠帮忙修改下代码

[复制链接]
发表于 2015-8-11 23:40 | 显示全部楼层 |阅读模式


Sub 需求2()
  Dim r%, i%
  Dim arr, brr()
  Dim d As Object
  Dim ws As Worksheet
  Application.ScreenUpdating = False
  Application.DisplayAlerts = False
  Set d = CreateObject("scripting.dictionary")
  With Worksheets("数据表")
    r = .Cells(.Rows.Count, 1).End(xlUp).Row
    arr = .Range("a2:k" & r)
    For i = 1 To UBound(arr)
      If arr(i, 10) <> "" And Not d.exists(arr(i, 10)) Then
      d(arr(i, 10)) = Array(arr(i, 4), arr(i, 7), arr(i, 1), arr(i, 8), arr(i, 6))
        ElseIf arr(i, 10) = "" Then
        k = k + 1
        ReDim Preserve brr(1 To 5, 1 To k)
        brr(1, k) = arr(i, 4)
        brr(2, k) = arr(i, 7)
        brr(3, k) = arr(i, 1)
        brr(4, k) = arr(i, 8)
        brr(5, k) = arr(i, 6)
      End If
    Next
  End With
  With Worksheets("客户档案")
    r = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
    .Cells(r, 1).Resize(d.Count, 5) = Application.Transpose(Application.Transpose(d.items))
    r = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
    .Cells(r, 1).Resize(k, 5) = Application.Transpose(brr)
    .Range("a1:ac" & r).Borders.LineStyle = xlContinuous
  End With

End Sub

大侠帮忙看修改下这个数据
这段代码刚开始运行正常可以执行
但后面不晓得咋了突然执行不了啦,数据格式什么的都没变动
其次对代码做下修改,具体需求见附件需求描述表中对需求2的描述

最佳答案
2015-8-12 09:16
Sub 需求2()
  Dim r%, i%, arr, d As Object
   Set d = CreateObject("scripting.dictionary")
  With Worksheets("数据表")
    r = .Cells(.Rows.Count, 1).End(xlUp).Row
    arr = .Range("a2:k" & r)
    For i = 1 To UBound(arr)
      If arr(i, 10) = "" And arr(i, 11) <> "" Then
      d(arr(i, 1)) = Array(arr(i, 4), arr(i, 7), arr(i, 1), arr(i, 8), arr(i, 6))
      End If
    Next
  End With
  If d.Count = 0 Then MsgBox "不存在符合条件的数据!": Exit Sub
  With Worksheets("客户档案")
    r = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
    .Cells(r, 1).Resize(d.Count, 5) = Application.Transpose(Application.Transpose(d.items))
    .Range("a1:ac" & r).Borders.LineStyle = xlContinuous
  End With
  MsgBox "数据提取完毕!"
End Sub

代码修改.rar

246.44 KB, 下载次数: 4

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2015-8-12 09:16 | 显示全部楼层    本楼为最佳答案   
Sub 需求2()
  Dim r%, i%, arr, d As Object
   Set d = CreateObject("scripting.dictionary")
  With Worksheets("数据表")
    r = .Cells(.Rows.Count, 1).End(xlUp).Row
    arr = .Range("a2:k" & r)
    For i = 1 To UBound(arr)
      If arr(i, 10) = "" And arr(i, 11) <> "" Then
      d(arr(i, 1)) = Array(arr(i, 4), arr(i, 7), arr(i, 1), arr(i, 8), arr(i, 6))
      End If
    Next
  End With
  If d.Count = 0 Then MsgBox "不存在符合条件的数据!": Exit Sub
  With Worksheets("客户档案")
    r = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
    .Cells(r, 1).Resize(d.Count, 5) = Application.Transpose(Application.Transpose(d.items))
    .Range("a1:ac" & r).Borders.LineStyle = xlContinuous
  End With
  MsgBox "数据提取完毕!"
End Sub

回复

使用道具 举报

 楼主| 发表于 2015-8-30 23:14 | 显示全部楼层
zjdh 发表于 2015-8-12 09:16
Sub 需求2()
  Dim r%, i%, arr, d As Object
   Set d = CreateObject("scripting.dictionary")

大侠在么
麻烦你看下
我这个帖子http://www.excelpx.com/forum.php ... p;page=1#pid3941370
每个工作簿都有多个工作表这代码应该怎么改
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 14:31 , Processed in 0.207182 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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