Excel精英培训网

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

[已解决]数组给不连续的单元格赋值只能一个一个地写吗

[复制链接]
发表于 2012-1-5 21:05 | 显示全部楼层 |阅读模式
不连续的单元格赋值给数组.rar (11.46 KB, 下载次数: 48)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2012-1-5 21:52 | 显示全部楼层    本楼为最佳答案   
  1. Private arr2
  2. Sub aa()
  3.     Dim arr1, arr3()
  4.     Dim i As Long, j As Long
  5.     Set d = CreateObject("Scripting.Dictionary")
  6.     arr1 = Range("C5:H11")    '蓝色区域赋值给数组
  7.     arr2 = Range("B13:G17")    '红色区域赋值给数组
  8.     ReDim arr3(1 To UBound(arr2, 1), 1 To UBound(arr2, 2))
  9.     For i = 1 To UBound(arr1, 1)    '在蓝色区域数组行循环
  10.         For j = 1 To UBound(arr1, 2)    '在蓝色区域数组列循环
  11.             If arr1(i, j) <> "" Then
  12.                 d(arr1(i, j)) = arr1(i + 1, j)
  13.                 arr1(i + 1, j) = ""
  14.             End If
  15.         Next j
  16.     Next i
  17.     For i = 1 To UBound(arr2, 1)    '在红色区域数组行循环
  18.         For j = 1 To UBound(arr2, 2)    '在红色区域数组列循环
  19.             If arr2(i, j) <> "" Then
  20.                 arr3(i, j) = arr2(i, j)
  21.                 arr3(i + 1, j) = d(arr2(i, j))
  22.             End If
  23.         Next j
  24.     Next i
  25.     Range("B13").Resize(UBound(arr3, 1), UBound(arr3, 2)) = arr3
  26. End Sub
  27. Sub qk()
  28.     Range("B13").Resize(UBound(arr2, 1), UBound(arr2, 2)) = arr2
  29. End Sub

复制代码
注意:复制之后可以清空,但是不能连续点击两次复制,否则程序出错,而且无法完成清空
附件: 不连续的单元格赋值给数组-sunjing.rar (12.96 KB, 下载次数: 87)
回复

使用道具 举报

 楼主| 发表于 2012-1-6 20:04 | 显示全部楼层
这样解决行吗?用定义区域名称的方法。

不连续的单元格赋值给数组.rar

19.52 KB, 下载次数: 91

回复

使用道具 举报

发表于 2012-1-8 23:23 | 显示全部楼层
是个不错的想法,学习了,谢谢!!!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-16 15:22 , Processed in 0.335228 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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