Excel精英培训网

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

[已解决]请教各位,将sheet1的数据行列倒过来放入sheet2

[复制链接]
发表于 2014-11-12 21:53 | 显示全部楼层 |阅读模式
本帖最后由 13915499429 于 2014-11-12 22:29 编辑

注意sheet1的行数是不一定的
最佳答案
2014-11-13 19:46
本帖最后由 易安1 于 2014-11-13 19:48 编辑
  1. Sub test()
  2.     Dim brr(1 To 100000, 1 To 2), arr, ar
  3.     Dim i As Integer, n As Integer
  4.     ar = Array("仓库号", "物料号", "MAX", "MIN")
  5.     With Sheet1
  6.         arr = .Range("a3:d" & .Cells(Rows.Count, 1).End(3).Row)
  7.         For i = 1 To UBound(arr)
  8.             m = i - 1
  9.             For k = 1 To UBound(arr, 2)
  10.                 brr(5 * m + k, 1) = ar(k - 1)
  11.                 brr(5 * m + 5, 1) = ""
  12.                 brr(5 * m + k, 2) = arr(i, k)
  13.                 brr(5 * m + 5, 2) = ""
  14.             Next
  15.         Next
  16.     End With
  17.     With Sheet2
  18.         .[a1].Resize(5 * m, 2) = brr
  19.         .Columns("a:b").ColumnWidth = 27
  20.         .Columns("a:b").HorizontalAlignment = xlCenter
  21.         .Range("A1:A" & (5 * m)).SpecialCells(xlCellTypeBlanks).RowHeight = 8
  22.         For n = 1 To 5 * m Step 5
  23.             With .Range(.Cells(n, 1), .Cells(n + 3, 2))
  24.                 .Borders.LineStyle = xlContinuous
  25.                 .RowHeight = 19
  26.             End With
  27.         Next
  28.     End With
  29. End Sub
复制代码

新建 Microsoft Office Excel 工作表.rar

9.66 KB, 下载次数: 7

发表于 2014-11-12 22:05 | 显示全部楼层
代码是为工作目标服务的,你必须说明意图才行。
从你的代码效果来看,可以精简为以下一行代码:
  1. if Sheets(1).[A65536].End(xlUp).Row>=3 then sheets(2).cells(1,4)=sheets(1).cells(3,1)
复制代码
相信这绝对不是你要的效果。
回复

使用道具 举报

发表于 2014-11-13 00:00 | 显示全部楼层
  1. Sub test()
  2.     Dim i As Integer
  3.     With Sheet1
  4.         i = .Cells(.Rows.Count, 1).End(3).Row
  5.         .Range("A2:D" & i).Copy
  6.         With Sheet2
  7.             .[a1].PasteSpecial Transpose:=True
  8.             .[a3:a4] = Array("Max", "Min")
  9.         End With
  10.     End With
  11. End Sub
复制代码
回复

使用道具 举报

发表于 2014-11-13 06:53 | 显示全部楼层
附件

新建 Microsoft Office Excel 工作表.rar

10.63 KB, 下载次数: 5

回复

使用道具 举报

 楼主| 发表于 2014-11-13 17:10 | 显示全部楼层
baksy 发表于 2014-11-13 06:53
附件

谢谢,可是我没看到代码
回复

使用道具 举报

 楼主| 发表于 2014-11-13 17:20 | 显示全部楼层
易安1 发表于 2014-11-13 00:00

还不是我想要的效果 我想要的效果
仓库号
02
物料
013205
Max
200
Max
100
仓库号
03
物料
013205
Max
200
Max
100
仓库号
04
物料
013205
Max
200
Max
100

回复

使用道具 举报

发表于 2014-11-13 19:46 | 显示全部楼层    本楼为最佳答案   
本帖最后由 易安1 于 2014-11-13 19:48 编辑
  1. Sub test()
  2.     Dim brr(1 To 100000, 1 To 2), arr, ar
  3.     Dim i As Integer, n As Integer
  4.     ar = Array("仓库号", "物料号", "MAX", "MIN")
  5.     With Sheet1
  6.         arr = .Range("a3:d" & .Cells(Rows.Count, 1).End(3).Row)
  7.         For i = 1 To UBound(arr)
  8.             m = i - 1
  9.             For k = 1 To UBound(arr, 2)
  10.                 brr(5 * m + k, 1) = ar(k - 1)
  11.                 brr(5 * m + 5, 1) = ""
  12.                 brr(5 * m + k, 2) = arr(i, k)
  13.                 brr(5 * m + 5, 2) = ""
  14.             Next
  15.         Next
  16.     End With
  17.     With Sheet2
  18.         .[a1].Resize(5 * m, 2) = brr
  19.         .Columns("a:b").ColumnWidth = 27
  20.         .Columns("a:b").HorizontalAlignment = xlCenter
  21.         .Range("A1:A" & (5 * m)).SpecialCells(xlCellTypeBlanks).RowHeight = 8
  22.         For n = 1 To 5 * m Step 5
  23.             With .Range(.Cells(n, 1), .Cells(n + 3, 2))
  24.                 .Borders.LineStyle = xlContinuous
  25.                 .RowHeight = 19
  26.             End With
  27.         Next
  28.     End With
  29. End Sub
复制代码

test.rar

17.22 KB, 下载次数: 5

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-6 13:33 , Processed in 0.211881 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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