Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
12
返回列表 发新帖
楼主: coreduo

[已解决]请各位大师帮忙实现效果: 感谢hwc2ycy

[复制链接]
 楼主| 发表于 2013-1-19 23:15 | 显示全部楼层
大师能否注释一下,没看得懂,呵呵,新手
回复

使用道具 举报

发表于 2013-1-19 23:30 | 显示全部楼层
  1. Option Explicit

  2. Sub 效果一()
  3.     Dim arr
  4.     arr = ActiveSheet.UsedRange '读取当前工作表内已经使用的区域到数组
  5.     Dim i&, str$, str2, j&
  6.     For i = 1 To UBound(arr)    '行遍历
  7.         For j = 2 To UBound(arr, 2) '列循环,因为第一列是标题,直接跳过,不做处理
  8.             str = str & arr(i, j)   '单元格内容连接
  9.             arr(i, j) = ""          '清空
  10.         Next
  11.         arr(i, 2) = str             '把连接的字符串写入到数组中的第2列(相当于单元格所在行的第2列)
  12.         str = ""                    '清空,下轮循环要用
  13.     Next
  14.     ActiveSheet.UsedRange.Offset(UBound(arr) + 1) = arr '把整理的数组写回到工作表中
  15.     'Sheet2.Range("a1").Resize(UBound(arr), UBound(arr, 2)) = arr
  16.     '上面写入到新位置,就需要考虑到数组的行和列大小,这样才能保证把数组内所有的元素全写回工作表中
  17. End Sub

  18. Sub 效果二()
  19.     Dim arr
  20.     arr = ActiveSheet.UsedRange
  21.     Dim i&, str$, str2, j&, k&
  22.     For i = 1 To UBound(arr)
  23.         k = 1
  24.         For j = 2 To UBound(arr, 2)
  25.             If Len(arr(i, j)) > 0 Then  '判断是否是空值,如果有内容
  26.                 k = k + 1               'k是指示要写入的列坐标,从第2列开始
  27.                 If k <> j Then          '判断要写入的列标位置是否和当前循环到的列标相同,如果相同,则不需要进行操作
  28.                     arr(i, k) = arr(i, j)   '把当前内容写入指定的列坐标中,并把当数组元素清空。相当于移位
  29.                     arr(i, j) = ""          '移到新位置后,原来的老位置就要清空
  30.                 End If
  31.             End If
  32.         Next
  33.         k = 1                           '每行是从2列开始,找到合适的数据后,列坐标要加1,所以这里重置为1
  34.     Next
  35.     ActiveSheet.UsedRange.Offset(UBound(arr) + 1) = arr '写回工作表中。
  36.     'Sheet2.Range("a1").Resize(UBound(arr), UBound(arr, 2)) = arr
  37.     '上面写入到新位置,就需要考虑到数组的行和列大小,这样才能保证把数组内所有的元素全写回工作表中
  38. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2013-1-19 23:33 | 显示全部楼层
hwc2ycy 发表于 2013-1-19 23:30

感谢感谢,又学了一课,3Q VM!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-6 20:43 , Processed in 0.361026 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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