小编Chr*_*015的帖子

使用vba取消选择数据透视表中的所有项目

有些人可以解释一下如何取消选择新创建的数据透视表中的所有项目,以便我可以返回并只选择一个或两个项目吗?我尝试了以下方法:

.PivotItems("(Select All)").Visible = False
Run Code Online (Sandbox Code Playgroud)

谢谢.

excel vba excel-vba

6
推荐指数
1
解决办法
7万
查看次数

在横向中另存为PDF

如何将我的工作簿中的多个工作表pdf成横向格式的pdf格式?这就是我所拥有的.我错过了横向语法 -

Sub CompileReport()

    Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Select

    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="F:\Report\Test" & ".pdf", _
    Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False


End Sub
Run Code Online (Sandbox Code Playgroud)

谢谢!

excel vba excel-vba

5
推荐指数
1
解决办法
2万
查看次数

提高循环速度

我正在努力提高代码的速度.我已经搜索了所有基本提示,并添加了一个计时器,以帮助我确定我的代码运行所需的时间.每1000次迭代我大约需要4.14.我已经阅读了一些关于将代码写入数组并将其读回来的帖子,但我不确定如何在这里应用这个想法.也许,还有另一种方法.谢谢您的帮助!

Sub Random()

    Application.Calculation = xlCalculationManual
    Application.ScreenUpdating = False
    Application.DisplayStatusBar = False
    Application.DisplayAlerts = False
    Application.EnableEvents = False
    ActiveSheet.DisplayPageBreaks = False

    Dim wksData As Worksheet
    Dim StartTime As Double
    Dim SecondsElapsed As Double
    Dim x As Double
    Dim i As Double    

    Set wksData = Sheets("Data")
    wksData.Range("O3:P1048576").ClearContents             
    StartTime = Timer
    With wksData
        For x = 3 To 1002
            For j = 3 To 161
                .Range("O" & j) = Rnd()  
            Next j
            wksData.Calculate
            .Range("P" & x) = .Range("N1")
        Next x
    End With …
Run Code Online (Sandbox Code Playgroud)

excel performance vba

4
推荐指数
1
解决办法
189
查看次数

更改循环以更有效地运行

我有一个非常基本的循环,我用来运行一些随机的场景.在我的一个工作表中,我使用该=Rand()函数为我的工作簿生成随机数/方案.我正在尝试编程的是一个宏刷新工作簿(以及随机的数字集),然后在每次运行场景时将我的结果存入我的工作表.最终,我希望能够运行/生成100,000个随机场景并存储结果.这是我到目前为止编码的内容:

Sub Run()

    Application.Calculation = xlCalculationManual
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False   

    Dim wksInput As Worksheet, i As Integer

    Set wksInput = Sheets("Input")

        For i = 2 To 102

            Application.Calculate

            With wksInput                
                .Range("P" & i).Value = .Range("J35").Value
                .Range("Q" & i).Value = .Range("K35").Value
                .Range("R" & i).Value = .Range("L35").Value
                .Range("S" & i).Value = .Range("G32").Value
            End With              
        Next i    

    Application.ScreenUpdating = True
    Application.DisplayAlerts = True

End Sub
Run Code Online (Sandbox Code Playgroud)

我在这里工作得很好,除了运行100个场景需要23秒.基于我的计算,需要超过6小时的运行时间来获得我的100,000个随机场景.

我的问题是,是否有人知道一种聪明的方法,可以更改代码以更有效地运行或优化我已有的代码.我做了所有基本的事情,比如将计算转到手动并关闭屏幕更新.

谢谢你的想法.

excel vba excel-vba

0
推荐指数
1
解决办法
89
查看次数

标签 统计

excel ×4

vba ×4

excel-vba ×3

performance ×1