Excel精英培训网

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

[已解决]诚请老师写个代码

[复制链接]
发表于 2013-5-22 08:24 | 显示全部楼层 |阅读模式
本帖最后由 5aoffice 于 2013-5-22 08:34 编辑

诚请老师写个反向复制某一行数据的代码,见附件!先谢谢了。
ABCDCBA.rar (10.12 KB, 下载次数: 8)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-5-22 08:42 | 显示全部楼层
本帖最后由 hwc2ycy 于 2013-5-22 08:51 编辑

你这个没有跳过隐藏的,就是逆向写入的。

看错了,隐藏的是跳过了。
{:412:}
回复

使用道具 举报

发表于 2013-5-22 08:56 | 显示全部楼层
本帖最后由 hwc2ycy 于 2013-5-22 08:58 编辑
  1. Sub test()
  2.     Dim lColumn As Long, lCount
  3.     Dim arr(1 To 1000)
  4.     For lColumn = 1126 To 523 Step -1
  5.         Select Case True
  6.             Case Columns(lColumn).Hidden
  7.             Case Else
  8.                 lCount = lCount + 1
  9.                 arr(lCount) = Cells(144, lColumn)
  10.         End Select
  11.     Next
  12.     Range("tc140").Resize(, lCount).value = arr
  13. End Sub
复制代码
回复

使用道具 举报

发表于 2013-5-22 08:58 | 显示全部楼层
结果写在TC140了,对比下你的目标就知道了,要改位置的话,直接修改最后一行的range("tc140").resize(,lcount).value=arr
TC140即是输入位置,换成你想要的单元格地址就成了。
回复

使用道具 举报

 楼主| 发表于 2013-5-22 10:51 | 显示全部楼层
hwc2ycy 发表于 2013-5-22 08:58
结果写在TC140了,对比下你的目标就知道了,要改位置的话,直接修改最后一行的range("tc140").resize(,lcou ...

谢谢老师,我下载下来学习一下
回复

使用道具 举报

 楼主| 发表于 2013-5-22 10:56 | 显示全部楼层
hwc2ycy 发表于 2013-5-22 08:58
结果写在TC140了,对比下你的目标就知道了,要改位置的话,直接修改最后一行的range("tc140").resize(,lcou ...

老师,帮我再看下,还没达到要求
左1  左2  被复制到了隐藏的列里去了,要求隐藏的里面不复制,你看下,能不能做到我给的那个效果!
回复

使用道具 举报

 楼主| 发表于 2013-5-22 11:47 | 显示全部楼层
hwc2ycy 发表于 2013-5-22 08:58
结果写在TC140了,对比下你的目标就知道了,要改位置的话,直接修改最后一行的range("tc140").resize(,lcou ...

而且隐藏的列也是不固定的,
回复

使用道具 举报

发表于 2013-5-22 15:54 | 显示全部楼层
  1. Sub test()
  2.     Dim lColumn As Long, lCount
  3.     Dim arr(1 To 1000)
  4.     Dim arr2(1 To 1000)
  5.     Dim key1
  6.     Dim arrTemp()
  7.    
  8.     Dim objDic As Object
  9.     Set objDic = CreateObject("scripting.dictionary")
  10.    
  11.     For lColumn = 523 To 1126
  12.         Select Case True
  13.             Case Columns(lColumn).Hidden
  14.             Case Else
  15.                 lCount = lCount + 1
  16.                 objDic(lColumn - 522) = lColumn - 522
  17.                 arr(lCount) = Cells(144, lColumn)
  18.         End Select
  19.     Next
  20.     lColumn = lCount
  21.     For Each key1 In objDic.keys
  22.         arr2(key1) = arr(lColumn)
  23.         lColumn = lColumn - 1
  24.     Next
  25.     Range("tc140").Resize(, 1000).Value = arr2
  26.     Set objDic = Nothing
  27. End Sub
复制代码
好了。
回复

使用道具 举报

发表于 2013-5-22 15:56 | 显示全部楼层    本楼为最佳答案   
  1. Sub test()
  2.     Dim lColumn As Long, lCount As Long
  3.     Dim arr(1 To 1000)
  4.     Dim arr2(1 To 1000)
  5.     Dim key1
  6.    
  7.     Dim objDic As Object
  8.     Set objDic = CreateObject("scripting.dictionary")
  9.    
  10.     For lColumn = 523 To 1126
  11.         Select Case True
  12.             Case Columns(lColumn).Hidden
  13.             Case Else
  14.                 lCount = lCount + 1
  15.                 objDic(lColumn - 522) = lColumn - 522
  16.                 arr(lCount) = Cells(144, lColumn)
  17.         End Select
  18.     Next
  19.     lColumn = lCount
  20.     For Each key1 In objDic.keys
  21.         arr2(key1) = arr(lColumn)
  22.         lColumn = lColumn - 1
  23.     Next
  24.     Application.ScreenUpdating = False
  25.     Range("tc140").Resize(, UBound(arr2)).Value = arr2
  26.     Set objDic = Nothing
  27.     Application.ScreenUpdating = True
  28.     MsgBox "OK", vbInformation + vbOKOnly
  29. End Sub
复制代码
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-28 17:49 , Processed in 0.590307 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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