ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
123
返回列表 发新帖
楼主: 山菊花

[讨论] 匪夷所思的Range()合并区域赋值问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-9-21 09:41 | 显示全部楼层
本帖已被收录到知识树中,索引项:Range对象
简单中隐藏着这么多的不简单,学习了

TA的精华主题

TA的得分主题

发表于 2014-9-21 20:59 | 显示全部楼层
收藏学习。

TA的精华主题

TA的得分主题

发表于 2015-7-5 20:58 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
个人觉得这个类似双for each的写入
而其for each 的循环顺序是反N字形,就是从左到右,从上到下的顺序写入的。
总结一下其实这个跟transpose写入是有区别的,当然当数据只有一行时是一样的

TA的精华主题

TA的得分主题

发表于 2015-7-5 21:28 | 显示全部楼层
模拟了一个双foreach
QQ截图20150705212743.jpg

双FOREACH猜想.zip

13.64 KB, 下载次数: 15

TA的精华主题

TA的得分主题

发表于 2015-7-5 21:30 | 显示全部楼层
  1. Sub 测试4X2()
  2.     Dim rng1 As Range, rng2 As Range, intCounter As Integer, intCounter2 As Integer, Counter As Integer
  3.     Dim rngArr1() As Range, rngArr2() As Range
  4.     Set rng1 = Range("A1:B4"): Set rng2 = Range("D3:G4")
  5.     Range("A1:B4,D1:G2").Value = rng1.Value
  6.     ReDim rngArr1(1 To rng1.Count): ReDim rngArr2(1 To rng2.Count)
  7.     For intCounter = 1 To rng1.Columns.Count
  8.         For intCounter2 = 1 To rng1.Rows.Count
  9.             Count = Count + 1
  10.             Set rngArr1(Count) = rng1(intCounter2, intCounter)
  11.         Next
  12.     Next
  13.     Count = 0
  14.     For intCounter = 1 To rng2.Columns.Count
  15.         For intCounter2 = 1 To rng2.Rows.Count
  16.             Count = Count + 1
  17.             Set rngArr2(Count) = rng2(intCounter2, intCounter)
  18.         Next
  19.     Next
  20.     For Count = 1 To rng1.Count
  21.         Debug.Print rngArr1(Count).Address; "→"; rngArr2(Count).Address
  22.         rngArr2(Count).Value = rngArr1(Count).Value
  23.     Next
  24. End Sub
  25. Sub 测试4X1()
  26.     Dim rng1 As Range, rng2 As Range, intCounter As Integer, intCounter2 As Integer, Counter As Integer
  27.     Dim rngArr1() As Range, rngArr2() As Range
  28.     Set rng1 = Range("A7:A10"): Set rng2 = Range("D7:G7")
  29.     Range("A7:A10,D8:G8").Value = rng1.Value
  30.     ReDim rngArr1(1 To rng1.Count): ReDim rngArr2(1 To rng2.Count)
  31.     For intCounter = 1 To rng1.Columns.Count
  32.         For intCounter2 = 1 To rng1.Rows.Count
  33.             Count = Count + 1
  34.             Set rngArr1(Count) = rng1(intCounter2, intCounter)
  35.         Next
  36.     Next
  37.     Count = 0
  38.     For intCounter = 1 To rng2.Columns.Count
  39.         For intCounter2 = 1 To rng2.Rows.Count
  40.             Count = Count + 1
  41.             Set rngArr2(Count) = rng2(intCounter2, intCounter)
  42.         Next
  43.     Next
  44.     For Count = 1 To rng1.Count
  45.         Debug.Print rngArr1(Count).Address; "→"; rngArr2(Count).Address
  46.         rngArr2(Count).Value = rngArr1(Count).Value
  47.     Next
  48. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2015-7-5 21:47 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  1. Function getRange(rng As Range, intIndex As Integer) As Range
  2.     Dim intCounter As Integer, intCounter2 As Integer, Count As Integer
  3.     For intCounter = 1 To rng.Columns.Count
  4.         For intCounter2 = 1 To rng.Rows.Count
  5.             Count = Count + 1
  6.             If intIndex = Count Then Set getRange = rng(intCounter2, intCounter): Exit Function
  7.         Next
  8.     Next
  9. End Function
  10. Sub 测试4X2()
  11.     Dim rng1 As Range, rng2 As Range, intCounter As Integer
  12.     Set rng1 = Range("A1:B4"): Set rng2 = Range("D3:G4")
  13.     For intCounter = 1 To rng1.Count
  14.         getRange(rng2, intCounter).Value = getRange(rng1, intCounter).Value
  15.     Next
  16. End Sub
复制代码

简化版
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-26 00:18 , Processed in 0.028972 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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