|
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
1==========================================================
问题来源于帖子: 很简单的批量写入数值的代码怎么写?--By coben_hb
像这样类似的代码该怎么写?
Sheets(1).Range("c1:c100", "b1:b100", "d1:d100").Value = Sheets(1).Range("a1:a100").Value
2==========================================================
不难看出,Range()的写法有问题,各区域名称应该合并为一个字符串:
Sheets(1).Range("c1:c100,b1:b100,d1:d100").Value = Sheets(1).Range("a1:a100").Value
但测试的结果却出人意料,实在出人意料!
3==========================================================
通过。。。。。。,最后发现一个规律。
要填充的数据源Range("a1:a100").Value是一个1列100行的二维数组,填充到Range(区域1,区域2,区域3,区域……)时,奇数位置的区域“区域1”、“区域3”……与数据源相同,偶数位置的区域“区域2”、“区域4”……却是转置后的水平数组。
可用下面的代码测试一下:
Range("b1:b5,d1:h1,j1:j5,l1:p1,r1:r5").Value = Range("a1:a5").Value
结果为:
4==========================================================
既然如此,那前面问题的答案可以是:
Sheets(1).Range("c1:c100,b1,b1:b100,d1,d1:d100").Value = Sheets(1).Range("a1:a100").Value
把原来三个区域全部写到奇数位置上,偶数位置随便写一个占个位。
5==========================================================
前面测试的两个例子都是N行1列的数组,如果n行n列会怎样,简单举例,如果把A1:B5填充到若干个区域,会出现什么情况?
代码:Range("d1:e5,g1:k2,m1:n5,p1:t2").Value = Range("a1:b5").Value
我以为会得到下面的结果:
其实不是:
奇怪,太奇怪了。你觉得呢?
6==========================================================
谁给我一个答案?
|
|