Excel精英培训网

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

[已解决]请教:多行转置为一列的宏

[复制链接]
发表于 2016-2-16 14:33 | 显示全部楼层 |阅读模式
本帖最后由 海水鱼 于 2016-2-17 07:16 编辑

请看附件,谢谢
最佳答案
2016-2-16 22:27
Sub zh()
    Dim arr(), s%, i%, r As Range, rn As Range
    Set rn = Range("c3").CurrentRegion
    s = rn.Count
    ReDim arr(1 To s)
    For Each r In rn
        If r <> "" Then
            i = i + 1
            arr(i) = r.Value
        End If
    Next
    Range("m3").Resize(s) = Application.Transpose(arr)
End Sub

多行转置为一列.zip

6.96 KB, 下载次数: 14

发表于 2016-2-16 14:42 | 显示全部楼层
可以参考附件多行变一列自己去录制宏

多行变一列.zip

14.06 KB, 下载次数: 7

回复

使用道具 举报

 楼主| 发表于 2016-2-16 14:51 | 显示全部楼层
wqjyyylkz 发表于 2016-2-16 14:42
可以参考附件多行变一列自己去录制宏

打不开
回复

使用道具 举报

发表于 2016-2-16 15:32 | 显示全部楼层
再次附上,请查看

多行变一列.zip

14.06 KB, 下载次数: 12

回复

使用道具 举报

 楼主| 发表于 2016-2-16 18:04 | 显示全部楼层
顶上不要沉了
回复

使用道具 举报

发表于 2016-2-16 21:12 | 显示全部楼层
海水鱼 发表于 2016-2-16 18:04
顶上不要沉了

Sub zzh()
  Dim h%, i%, k, arr, brr
  h = Cells(Rows.Count, 3).End(xlUp).Row
  arr = Range("c3:k" & h)
  ReDim brr(1 To UBound(arr, 1) * UBound(arr, 2), 1 To 1)
  For i = 1 To UBound(arr, 1)
    For h = 1 To UBound(arr, 2)
      If arr(i, h) <> "" Then
        k = k + 1
        brr(k, 1) = arr(i, h)
      End If
    Next h
  Next i
  [m3].Resize(UBound(brr), 1) = brr
End Sub
回复

使用道具 举报

发表于 2016-2-16 22:27 | 显示全部楼层    本楼为最佳答案   
Sub zh()
    Dim arr(), s%, i%, r As Range, rn As Range
    Set rn = Range("c3").CurrentRegion
    s = rn.Count
    ReDim arr(1 To s)
    For Each r In rn
        If r <> "" Then
            i = i + 1
            arr(i) = r.Value
        End If
    Next
    Range("m3").Resize(s) = Application.Transpose(arr)
End Sub
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-4 03:30 , Processed in 0.429133 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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