Excel精英培训网

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

[已解决]急,如何用VBA代码把单元格有换行符的多行数据单独提取成单行单元格中

[复制链接]
发表于 2013-7-17 09:56 | 显示全部楼层 |阅读模式
急,如何用VBA代码把单元格有换行符的多行数据单独提取成单行单元格中
最佳答案
2013-7-17 15:51
说实话,我没有看过一本书,全部是从论坛学的。
  刚开始也是和你一样,想要实现一个功能,然后在各网站上找方法,如果找不到,就发贴提问,不过一般初次接触VBA的人提的问题都大同小异,不发贴提问也能找到答案。
  然后我发现了几个比较好的论坛,包括EP,经常来看看,一边学习理解一边尝试帮别人解决一些很初级的问题,顺便再慢慢学习高手的方法,一步一步积累。
  关于入门书籍,你在论坛以前的贴子里找找,有很多高手也推荐过一些,你可以参考一下,我给不出建议,不好意思。

Book2.rar

4.6 KB, 下载次数: 106

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-7-17 10:27 | 显示全部楼层
思路,粘贴到word里再粘贴回来,试试啊!
回复

使用道具 举报

发表于 2013-7-17 10:29 | 显示全部楼层
附件请测试
  1. Private Sub CommandButton1_Click()
  2. Dim arr, j%, d As Object
  3. Set d = CreateObject("scripting.dictionary")
  4. arr = Range(Cells(3, 1), Cells(3, [iv3].End(1).Column))
  5. For j = 1 To UBound(arr, 2)
  6.   d(j) = Split(arr(1, j), Chr(10))
  7. Next j
  8. [a7].Resize(UBound(Split(arr(1, 1), Chr(10))) + 1, UBound(arr, 2)) = Application.Transpose(d.items)
  9. End Sub
复制代码

Book2.zip

11.48 KB, 下载次数: 248

回复

使用道具 举报

 楼主| 发表于 2013-7-17 10:43 | 显示全部楼层
,太棒了.要怎么学,才能有兄台这般本事。能教教我不?
回复

使用道具 举报

发表于 2013-7-17 11:10 | 显示全部楼层
你现在的基础我完全不了解,但是应该说不难,我的代码所用到的知识也是最基本的数组及字典的组合用法。
回复

使用道具 举报

 楼主| 发表于 2013-7-17 15:44 | 显示全部楼层
大灰狼1976 发表于 2013-7-17 11:10
你现在的基础我完全不了解,但是应该说不难,我的代码所用到的知识也是最基本的数组及字典的组合用法。

你好,刚发你的表格如果数据有很多要实现该如何设置代码,详见附件。还有我刚接触到VBA,觉得有些功能很牛叉,挺感兴趣,没啥基础请指点一下如何开始,有什么教材可以给我学学吗?跪谢。

Book3.rar

5.49 KB, 下载次数: 52

回复

使用道具 举报

发表于 2013-7-17 15:51 | 显示全部楼层    本楼为最佳答案   
说实话,我没有看过一本书,全部是从论坛学的。
  刚开始也是和你一样,想要实现一个功能,然后在各网站上找方法,如果找不到,就发贴提问,不过一般初次接触VBA的人提的问题都大同小异,不发贴提问也能找到答案。
  然后我发现了几个比较好的论坛,包括EP,经常来看看,一边学习理解一边尝试帮别人解决一些很初级的问题,顺便再慢慢学习高手的方法,一步一步积累。
  关于入门书籍,你在论坛以前的贴子里找找,有很多高手也推荐过一些,你可以参考一下,我给不出建议,不好意思。
回复

使用道具 举报

 楼主| 发表于 2013-7-17 16:33 | 显示全部楼层
谢谢
回复

使用道具 举报

 楼主| 发表于 2013-7-17 20:42 | 显示全部楼层
请教大侠各行代码的注释能给我讲讲不,谢谢
回复

使用道具 举报

发表于 2013-7-17 22:00 | 显示全部楼层
  1. Private Sub CommandButton1_Click()       '创建命令按钮过程
  2. Dim arr, j%, d As Object                              '声明数组,变量及字典
  3. Set d = CreateObject("scripting.dictionary")      '创建字典引用
  4. arr = Range(Cells(3, 1), Cells(3, [iv3].End(1).Column))   '将一个单元格多行的区域赋值给二维数组
  5. For j = 1 To UBound(arr, 2)               '从二维数组第一列循环至最后一列
  6.   d(j) = Split(arr(1, j), Chr(10))            '将数组元素用换行符分隔成一维数组后赋值给字典的KEY
  7. Next j                                             '继续循环
  8. [a7].Resize(UBound(Split(arr(1, 1), Chr(10))) + 1, UBound(arr, 2)) = Application.Transpose(d.items)
  9. '将A7单元格调整大小至行数与单元格内行数相同,列数与数组列数相同的单元格区域,放入字典KEY
  10. End Sub
复制代码
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 01:03 , Processed in 0.548407 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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