Excel精英培训网

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

[已解决]关于字典请问下附件中为什么报错,如何解决

[复制链接]
发表于 2017-5-20 21:25 | 显示全部楼层 |阅读模式
  1. Sub hpgld() '合并光缆段
  2.     Dim arr, x As Long, k1, k, t
  3.     arr = Sheets("光缆段").UsedRange
  4.     Set d = CreateObject("Scripting.Dictionary")
  5.     For Each sh In Sheets
  6.         If sh.Name = "光缆段1" Then
  7.             Application.DisplayAlerts = False
  8.             sh.Delete
  9.             Application.DisplayAlerts = True
  10.         End If
  11.     Next
  12.     Sheets.Add.Name = "光缆段1"
  13.     For x = 2 To UBound(arr)
  14.        k1 = arr(x, 1)
  15.        If d.exists(k1) Then
  16.        d(k1) = d(k1) & "<>" & arr(x, 2)
  17.        Else
  18.        d(k1) = arr(x, 2)
  19.        End If
  20.     Next
  21.     k = d.keys
  22.     t = d.Items
  23.      Sheets("光缆段1").Range("A2").Resize(d.Count) = Application.Transpose(k)
  24.      Sheets("光缆段1").Range("b2").Resize(d.Count) = Application.Transpose(t)
  25. End Sub
复制代码


最佳答案
2017-5-20 23:12
本帖最后由 france723 于 2017-5-20 23:16 编辑
  1. Sub hpgld() '合并光缆段
  2.     Dim arr, x As Long, k1, k, t, n,y, m
  3.     arr = Sheets("光缆段").UsedRange
  4.     Set d = CreateObject("Scripting.Dictionary")
  5.     For Each sh In Sheets
  6.         If sh.Name = "光缆段1" Then
  7.             Application.DisplayAlerts = False
  8.             sh.Delete
  9.             Application.DisplayAlerts = True
  10.         End If
  11.     Next
  12.     Sheets.Add.Name = "光缆段1"
  13.     For x = 2 To UBound(arr)
  14.        k1 = arr(x, 1)
  15.        If d.exists(k1) Then
  16.        d(k1) = d(k1) & "<>" & arr(x, 2)
  17.        Else
  18.        d(k1) = arr(x, 2)
  19.        End If
  20.     Next
  21.     k = d.keys
  22.      Sheets("光缆段1").Range("A2").Resize(d.Count) = Application.Transpose(k)
  23.      y = Sheets("光缆段1").Range("a65536").End(3).Row
  24.      For n = 2 To y
  25.         m = Sheets("光缆段1").Range("A" & n)
  26.         Sheets("光缆段1").Range("B" & n) = d(m)
  27.      Next n
  28. End Sub
复制代码
字典里key和Item相互对应,不能像你那样直接派出所有ITEM,和你KEY对不上

这个为什么报错.rar

16.65 KB, 下载次数: 6

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2017-5-20 23:12 | 显示全部楼层    本楼为最佳答案   
本帖最后由 france723 于 2017-5-20 23:16 编辑
  1. Sub hpgld() '合并光缆段
  2.     Dim arr, x As Long, k1, k, t, n,y, m
  3.     arr = Sheets("光缆段").UsedRange
  4.     Set d = CreateObject("Scripting.Dictionary")
  5.     For Each sh In Sheets
  6.         If sh.Name = "光缆段1" Then
  7.             Application.DisplayAlerts = False
  8.             sh.Delete
  9.             Application.DisplayAlerts = True
  10.         End If
  11.     Next
  12.     Sheets.Add.Name = "光缆段1"
  13.     For x = 2 To UBound(arr)
  14.        k1 = arr(x, 1)
  15.        If d.exists(k1) Then
  16.        d(k1) = d(k1) & "<>" & arr(x, 2)
  17.        Else
  18.        d(k1) = arr(x, 2)
  19.        End If
  20.     Next
  21.     k = d.keys
  22.      Sheets("光缆段1").Range("A2").Resize(d.Count) = Application.Transpose(k)
  23.      y = Sheets("光缆段1").Range("a65536").End(3).Row
  24.      For n = 2 To y
  25.         m = Sheets("光缆段1").Range("A" & n)
  26.         Sheets("光缆段1").Range("B" & n) = d(m)
  27.      Next n
  28. End Sub
复制代码
字典里key和Item相互对应,不能像你那样直接派出所有ITEM,和你KEY对不上

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-23 19:44 , Processed in 0.770028 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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