如何编写for循环遍历workbook1和workbook2中的所有worksheet
遍历两个工作簿所有工作表的循环实现
核心逻辑很简单:把两个工作簿的工作表集合合并到同一个可迭代序列里,就能用单循环覆盖所有目标工作表,不需要写复杂的嵌套判断。下面是几种最常用场景的可直接复用代码:
VBA(Office 宏场景)
如果是在Excel里写宏,两种写法都可以,第一种更直白不容易出问题:
' 写法1:分两段遍历,逻辑最直观 Dim ws As Worksheet ' 遍历第一个工作簿的所有表 For Each ws In Workbooks("workbook1.xlsx").Worksheets ' 在这里写每个工作表要执行的操作 ' 比如取单元格值、调整格式等 Next ws ' 遍历第二个工作簿的所有表 For Each ws In Workbooks("workbook2.xlsx").Worksheets ' 复用和上面完全一致的处理逻辑即可 Next ws
如果要严格匹配你写的单循环结构,可以先把所有工作表放进集合再遍历:
' 写法2:单循环结构,和你预期的代码形式完全一致 Dim allSheets As New Collection, ws As Worksheet For Each ws In Workbooks("workbook1.xlsx").Worksheets allSheets.Add ws Next For Each ws In Workbooks("workbook2.xlsx").Worksheets allSheets.Add ws Next For Each ws In allSheets ' 统一在这里写处理逻辑 Next
Python openpyxl(本地xlsx文件读写场景)
from openpyxl import load_workbook # 加载两个目标工作簿 wb1 = load_workbook("workbook1.xlsx", data_only=True) wb2 = load_workbook("workbook2.xlsx", data_only=True) # 合并两个工作簿的工作表列表,单循环遍历全部 for ws in [*wb1.worksheets, *wb2.worksheets]: # 写你的处理逻辑,ws就是当前遍历到的工作表对象 print(f"当前表名:{ws.title},所属文件:{ws.parent.filename}") # 处理完成后关闭文件 wb1.close() wb2.close()
Python pandas(批量数据处理场景)
如果是做表数据的统计、清洗,用pandas的写法更高效:
import pandas as pd # 直接遍历两个文件的所有工作表 for file in ["workbook1.xlsx", "workbook2.xlsx"]: xls = pd.ExcelFile(file) for sheet_name in xls.sheet_names: # 读取当前表为DataFrame结构 df = pd.read_excel(xls, sheet_name=sheet_name) # 写数据处理逻辑
注意点:如果两个工作簿里存在同名工作表,处理时不要只用表名做唯一标识,一定要带上所属工作簿的文件名/路径做区分,避免数据覆盖或者逻辑判断错误。
内容的提问来源于stack exchange,提问作者34653120
相关产品推荐
相关产品推荐

