Excel精英培训网

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

[已解决]一个单元装入二个单元中成合并状态

[复制链接]
发表于 2014-8-19 20:07 | 显示全部楼层 |阅读模式
一个单元装入二个单元中成合并状态.
最佳答案
2014-8-20 05:21
  1. Sub Macro1()
  2. Dim arr, brr, rng As Range, i&, n&
  3. arr = Range("b8").CurrentRegion
  4. ReDim brr(1 To UBound(arr) * 2, 1 To 1)
  5. For i = 1 To UBound(arr)
  6.     brr(2 * i - 1, 1) = arr(i, 1)
  7. Next
  8. Set rng = Application.InputBox("请用鼠标选择顶点单元格", Type:=8)
  9. n = UBound(brr)
  10. rng.Resize(n).Clear
  11. rng.Resize(n) = brr
  12. With rng.Resize(2)
  13.     .Merge
  14.     .Copy
  15. End With
  16. Cells(rng.Row + 2, rng.Column).Resize(n - 2).PasteSpecial Paste:=xlPasteFormats
  17. rng.Resize(n).Borders().Weight = xlThin
  18. Application.CutCopyMode = False
  19. End Sub
复制代码

一个单元装入二个单元中成合并状态.rar

9.53 KB, 下载次数: 11

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2014-8-19 21:04 | 显示全部楼层
如果要用合并单元格,用数组就不行了,除非你事先已合并了单元格,就像你的 H 列那样,你的代码就可以。如果目的区域事先没合并那你的代码就不行了,也不能用数组,而是每个单元格先合并后赋值。
回复

使用道具 举报

发表于 2014-8-19 21:15 | 显示全部楼层
最后一句写入“Range("J5").Resize(UBound(brr, 1), 1) = brr”不要哈
在next的后面加上如下代码:
For j = 1 To UBound(brr) Step 2
    Range("j" & j + 4) = brr(j, 1)
    Range("j" & j + 4 & ":j" & j + 5).Merge
Next
见附件

一个单元装入二个单元中成合并状态.rar

10.55 KB, 下载次数: 1

评分

参与人数 1 +12 收起 理由
张雄友 + 12 很给力!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2014-8-19 21:20 | 显示全部楼层
pengyx 发表于 2014-8-19 21:15
最后一句写入“Range("J5").Resize(UBound(brr, 1), 1) = brr”不要哈
在next的后面加上如下代码:
For j ...

For j = 1 To UBound(brr) Step 2
这句写得好。但下面二句的表达方式很死板。

    Range("j" & j + 4) = brr(j, 1)
    Range("j" & j + 4 & ":j" & j + 5).Merge
回复

使用道具 举报

发表于 2014-8-19 21:22 | 显示全部楼层
按你的原意思改的:

一个单元装入二个单元中成合并状态.zip

10.5 KB, 下载次数: 3

评分

参与人数 1 +6 收起 理由
张雄友 + 6 很给力!

查看全部评分

回复

使用道具 举报

发表于 2014-8-20 05:21 | 显示全部楼层    本楼为最佳答案   
  1. Sub Macro1()
  2. Dim arr, brr, rng As Range, i&, n&
  3. arr = Range("b8").CurrentRegion
  4. ReDim brr(1 To UBound(arr) * 2, 1 To 1)
  5. For i = 1 To UBound(arr)
  6.     brr(2 * i - 1, 1) = arr(i, 1)
  7. Next
  8. Set rng = Application.InputBox("请用鼠标选择顶点单元格", Type:=8)
  9. n = UBound(brr)
  10. rng.Resize(n).Clear
  11. rng.Resize(n) = brr
  12. With rng.Resize(2)
  13.     .Merge
  14.     .Copy
  15. End With
  16. Cells(rng.Row + 2, rng.Column).Resize(n - 2).PasteSpecial Paste:=xlPasteFormats
  17. rng.Resize(n).Borders().Weight = xlThin
  18. Application.CutCopyMode = False
  19. End Sub
复制代码
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 10:57 , Processed in 0.361470 second(s), 15 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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