Excel精英培训网

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

[已解决]随机乱序并生成工作薄的问题(修改代码)

[复制链接]
发表于 2016-3-19 16:44 | 显示全部楼层 |阅读模式
本帖最后由 小玲玲 于 2016-3-22 19:49 编辑

附件 随机乱序并生成文件附件.rar (80.95 KB, 下载次数: 8)
发表于 2016-3-22 07:23 | 显示全部楼层    本楼为最佳答案   
操作.zip (145.33 KB, 下载次数: 24)
回复

使用道具 举报

 楼主| 发表于 2016-3-22 22:12 | 显示全部楼层
josonxu 发表于 2016-3-22 07:23
会在结果文件夹内生成49个   屏幕更新我关了 文件多 数据多 cpu是考验

谢谢老师帮助.有个小问题,麻烦老师看看.

所生成的工作薄中,工作表只有Sheet1. 给后续操作带来诸多不便.
希望所生成的工作薄,都有三个工作表Sheet1   Sheet2   Sheet3

谢谢.
回复

使用道具 举报

发表于 2016-3-22 22:28 | 显示全部楼层
小玲玲 发表于 2016-3-22 22:12
谢谢老师帮助.有个小问题,麻烦老师看看.

所生成的工作薄中,工作表只有Sheet1. 给后续操作带来诸多 ...

Sub test()
    Application.ScreenUpdating = False
    Sheet1.UsedRange.ClearContents
    Dim i&, s&, j&, r&, arr, k
    For s = 1 To 49
        arr = Range("A1").CurrentRegion
        For i = 1 To UBound(arr, 2)
            For j = 1 To UBound(arr)
                r = Int(Rnd() * UBound(arr) + 1)
                T = arr(j, i)
                arr(j, i) = arr(r, i)
                arr(r, i) = T
            Next
        Next
        Sheet2.Range("A1").Resize(UBound(arr), UBound(arr, 2)) = arr
        Sheet1.Range("A1").Resize(UBound(arr), UBound(arr, 2)) = arr
        Sheet1.Copy
        For k = 1 To 2
            Sheets.Add After:=Sheets(Sheets.Count)
        Next
        ActiveWorkbook.Close True, ThisWorkbook.Path & "\结果\" & s & ".xlsx"
    Next
    Application.ScreenUpdating = True
    MsgBox "重排完成!"
End Sub

回复

使用道具 举报

 楼主| 发表于 2016-3-22 22:54 | 显示全部楼层
josonxu 发表于 2016-3-22 22:28
Sub test()
    Application.ScreenUpdating = False
    Sheet1.UsedRange.ClearContents

谢谢老师了.看了一下,还是有一点小问题.
为什么显示的不是 Sheet1  而是 Sheet3?
希望显示的是Sheet1,呈现在眼前的是看得见的数据.

谢谢了.
回复

使用道具 举报

发表于 2016-3-22 22:58 | 显示全部楼层
本帖最后由 josonxu 于 2016-3-22 23:26 编辑
小玲玲 发表于 2016-3-22 22:54
谢谢老师了.看了一下,还是有一点小问题.
为什么显示的不是 Sheet1  而是 Sheet3?
希望显示的是Sheet ...
你加一段激活 sheet1的代码就行了   红色代码下面加上sheet1.Activate   需要自己灵活运用  这个不难
回复

使用道具 举报

 楼主| 发表于 2016-3-22 23:17 | 显示全部楼层
josonxu 发表于 2016-3-22 22:58
你加一段激活 sheet1的代码就行了   红色代码下面加上sheet1.Activate   需要自己灵活运用  这个不难

老师啊,我就是菜菜一个,我把sheet1.Activate加在红色代码后,试了一下,运行不了.
麻烦老师帮帮我啊,谢谢了.祝好人一生平安.
回复

使用道具 举报

发表于 2016-3-22 23:25 | 显示全部楼层
小玲玲 发表于 2016-3-22 23:17
老师啊,我就是菜菜一个,我把sheet1.Activate加在红色代码后,试了一下,运行不了.
麻烦老师帮帮我啊, ...

Sub test()
    Application.ScreenUpdating = False
    Sheet1.UsedRange.ClearContents
    Dim i&, s&, j&, r&, arr, k
    For s = 1 To 49
        arr = Range("A1").CurrentRegion
        For i = 1 To UBound(arr, 2)
            For j = 1 To UBound(arr)
                r = Int(Rnd() * UBound(arr) + 1)
                T = arr(j, i)
                arr(j, i) = arr(r, i)
                arr(r, i) = T
            Next
        Next
        Sheet2.Range("A1").Resize(UBound(arr), UBound(arr, 2)) = arr
        Sheet1.Range("A1").Resize(UBound(arr), UBound(arr, 2)) = arr
        Sheet1.Copy
        For k = 1 To 2
            Sheets.Add After:=Sheets(Sheets.Count)
        Next
        ActiveWorkbook.Sheets(1).Activate
        ActiveWorkbook.Close True, ThisWorkbook.Path & "\结果\" & s & ".xlsx"
    Next
    Application.ScreenUpdating = True
    MsgBox "重排完成!"
End Sub


回复

使用道具 举报

 楼主| 发表于 2016-3-22 23:48 | 显示全部楼层
josonxu 发表于 2016-3-22 23:25
Sub test()
    Application.ScreenUpdating = False
    Sheet1.UsedRange.ClearContents

谢谢老师了,再谢.
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-26 13:12 , Processed in 0.321594 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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