使用Python或Power Query按固定间隔将多行数据转置到同一列
Excel数据转置填充解决方案
针对你需要将源Excel数据按指定规则转置填充到目标Excel的需求,这里提供一个基于Python openpyxl库的实现脚本,无需手动操作即可完成批量处理。
前置准备
首先安装依赖库:
pip install openpyxl
实现脚本
from openpyxl import load_workbook # 加载源文件与目标文件 source_wb = load_workbook('源数据集.xlsx') target_wb = load_workbook('目标数据集.xlsx') # 获取工作表(默认使用第一个工作表,若数据在指定sheet可修改为source_wb['SheetName']) source_ws = source_wb.active target_ws = target_wb.active # 初始化目标C列的起始填充行 target_start_row = 2 # 遍历源文件A列(从第2行开始) for row_idx, row in enumerate(source_ws.iter_rows(min_row=2, max_col=1, values_only=True), start=2): point_id = row[0] if not point_id: # 若A列单元格为空,停止遍历(若源文件中间有空行后仍有数据,可替换为continue) break # 读取当前行B到E列的数值 species_values = [source_ws.cell(row=row_idx, column=col).value for col in range(2, 6)] # 将数值写入目标C列的对应位置 for offset, value in enumerate(species_values): target_ws.cell(row=target_start_row + offset, column=3).value = value # 更新下一次填充的起始行(下移7个单元格,对应行号+6) target_start_row += 6 # 保存更新后的目标文件(避免覆盖原文件,使用新文件名) target_wb.save('目标数据集_更新后.xlsx') print("数据处理完成,结果已保存至'目标数据集_更新后.xlsx'")
关键逻辑说明
- 遍历源数据:从源文件A2开始逐行检查,若单元格为空则停止(可根据实际数据结构调整为空行时的处理逻辑)。
- 读取数据:提取当前行B到E列的所有数值,包括空值。
- 写入目标数据:将读取到的数值依次写入目标文件的C列,起始位置从
target_start_row开始,覆盖4个连续单元格。 - 更新起始位置:每次处理完一行源数据后,将目标起始行增加6,确保下一次填充位置在上一次的下方第7个单元格(如从C2到C8)。
注意事项
- 确保源文件的物种数据确实在B到E列,若列范围不同,修改
range(2, 6)的参数(例如B到F列改为range(2, 7))。 - 运行脚本前需关闭源文件和目标文件,否则会触发权限错误。
- 脚本默认保存为新文件,避免覆盖原始目标数据,可根据需求修改保存的文件名。
内容的提问来源于stack exchange,提问作者Phylthy Phil
相关产品推荐
相关产品推荐

