使用 xlwings 加速 while 循环

发布于 2025-01-12 20:24:30 字数 589 浏览 0 评论 0原文

正如标题所示,我正在使用 while 循环(如下)来迭代包含 78,000 多行数据的 Excel 工作表。我的 if 语句中有大约 65 个不同的条件(为了我正在做的事情,没有显示所有条件),并且想知道是否有一个好的方法来加快这个过程。目前运行时间约为 4 小时,我个人觉得可以加快速度,但我不确定从哪里开始。

while i <= lastRow:
      if sheet.range('A' + str(i)).value == 'DLQ' or sheet.range('A' + str(i)).value == 'DLZ' + (another 63 conditions):
           i = i + 1
           lastRow = wb.sheets[0].range('A' + str(wb.sheets[0].cells.last_cell.row)).end('up').row
      else:
           xw.Range(str(i) + ':' + str(i)).delete(shift='up').row

我想使用 for 循环,但迭代不适用于我想要做的事情。如果您能帮助我提高这个循环的效率,我将非常感激!

As the title says, I am using a while loop (below) to iterate through an excel sheet with 78,000+ rows of data. I have roughly 65 different conditions in the if statement (not showing all for sake of what I'm doing) and was wondering if there was a good way to speed this process up. Currently the runtime is ~4 hours and I personally feel like it can be sped up but I am unsure where to start.

while i <= lastRow:
      if sheet.range('A' + str(i)).value == 'DLQ' or sheet.range('A' + str(i)).value == 'DLZ' + (another 63 conditions):
           i = i + 1
           lastRow = wb.sheets[0].range('A' + str(wb.sheets[0].cells.last_cell.row)).end('up').row
      else:
           xw.Range(str(i) + ':' + str(i)).delete(shift='up').row

I would like to use a for loop but the iteration doesn't work with what I am trying to do. If you can help me make this loop more efficient I would really appreciate it!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文