【Python】Worksheet.move_rangeメソッドを使用して、表(セル)を移動させる。


pythonを使用してExcelファイルの操作を勉強しています。
本日の気づき(復習)は、表(セル)の移動に関してです。
pythonでExcelを操作するため、openpyxlというパッケージを使用しています。

上記のようなブック「商品リスト」を

のように表を移動させたいです。

Worksheet.move_rangeメソッド

ws.move_range('移動するセルの範囲',
              rows=移動する行数, cols=移動する列数,
              translate=数式等のセル参照を更新する場合はTrue)

シート上で表の様な複数のセルを移動させる場合は
Worksheet.move_rangeメソッドを使用します。
気を付けておくべきことが何点かあります。

  • rows:下に移動させる場合は整数(上なら負の整数)
  • cols:右に移動させる場合は整数(左なら負の整数)
  • rows引数cols引数に範囲外の値を入れてしまうとエラーになる
  • 移動先の位置にすでに値や表があったとしてもセルを上書きしてしまう
  • 数式の更新は基本行わない。(translate=Trueの記述追加が必要)

最終的なコード

from openpyxl import load_workbook

wb = load_workbook('商品リスト.xlsx')
ws = wb.active
ws.move_range('B2:I24', rows=1, cols=3, translate=True)

wb.save('商品リスト_移動.xlsx')

translateに気付かず、右往左往していました。translate=Trueは偉大。
セルの書式設定もそのまま移動してくれるのでたいへん重宝します。