我知道这可能已经被问了一百次了,但是有没有一种方法可以让我下面的代码更快,甚至更快,甚至更快10倍?我喜欢Python Excel代码等
这可能是一个更为不同的问题,因为我不仅仅局限于简单的VBA
代码:
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlManual
Dim wb_raw As Workbook
Set wb_raw = Workbooks.Open("C:\Projects\Raw.xlsx")
wb_raw.Worksheets(1).Copy Before:=ThisWorkbook.Worksheets(2)
' the worksheet being copied has 100k rows
wb_raw.Close
Application.ScreenUpdating = True
Application.EnableEvents = True
Application.Calculation = xlAutomatic
我也对PowerQuery然后刷新路径开放
根据您选择使用的资源,有一些潜在的途径可以通过这一点
您没有提到是否要复制值、公式或两者。我只假设值
如果您可以在工作簿关闭时进行复制,那么pyopenxl或xlrd和xlwrt就可以做到这一点。这两种方法都可以复制值和公式,但这两种方法都不能计算公式,但从您的描述来看,这听起来没问题
如果在进行复制或移动时需要打开工作簿,有一些很棒的解决方案可以使用COM将Python和Excel集成在一起xlwings、{a2}、{a3}和DataNitro。使用这些解决方案,您可以编写一些Python代码进行复制。如果只需要值,可以使用数据帧来移动数据
我只使用了xlwings(和[FlyingKoala]——使用xlwings)。xlwings促进了Python和Excel之间的双向通信,因此您可以从Excel调用Python,也可以从Python调用Excel(包括VBA)。这项技术可以大大加快操作速度,尤其是在报告和建模方面
PyXll和FlyingKoala还有一个额外的优势,它们可以读取Excel公式并将其转换为Python代码,然后执行(评估)动态生成的Python代码
使用xlwings仅复制值的示例。我用它复制了100000行26列(A到Z),耗时17秒
相关问题 更多 >
编程相关推荐