日常業務で利用する Excel ファイルには、多くの数式が含まれていることがあります。たとえば、財務報告書、売上データ分析表、予算管理表などです。数式は計算に役立ちますが、場合によっては「数式を削除して計算結果のみを残したい」ときがあります。その理由としては以下が挙げられます。
- データ保存用:最終的な計算結果を残し、後から数式が変更されるのを防ぐ。
- 共有用:数式を理解していない相手に渡す場合、誤操作によるエラーを避けられる。
- パフォーマンス向上:数式が多すぎるとファイルが重くなるため、静的な値に変換することで処理速度を改善できる。
Excel 上では「コピー → 値として貼り付け」で簡単に実現できますが、ファイル数が多い場合は自動化が有効です。この記事では Spire.XLS for Python を使って、この処理を自動化する方法を紹介します。
1. ワークブックの読み込み
from spire.xls import Workbook, ExcelClearOptions
# Excel ファイルを読み込む
wb = Workbook()
wb.LoadFromFile("Sample.xlsx")
sheet = wb.Worksheets.get_Item(0)
解説:
ここでは Workbook クラスを使って Sample.xlsx を読み込み、最初のワークシートを取得しています。実務ではシート名やシート番号を指定して柔軟に選択できます。
2. 数式セルを判定して値に変換
for row in range(sheet.Rows.Count):
for col in range(sheet.Columns.Count):
cell = sheet.Range.get_Item(row + 1, col + 1)
if cell.HasFormula:
value = cell.FormulaValue
cell.Clear(ExcelClearOptions.ClearContent)
cell.Value = value
ポイント解説:
-
セルを走査:
Rows.CountとColumns.Countを使って、すべてのセルをチェックします。 -
数式の判定:
HasFormulaプロパティでそのセルが数式かどうかを確認します。 -
計算結果の取得:
FormulaValueで数式の計算結果を取り出します。 -
数式の削除:
Clear(ExcelClearOptions.ClearContent)でセルの内容(数式)を消去。ただしセルの書式は保持されます。 -
値の再設定:
Valueに計算結果を代入し、静的なデータに変換します。
これにより、見た目は変わらず中身だけが「値」に置き換わります。
3. ファイルの保存
wb.SaveToFile("output/remove_formulas.xlsx")
処理後は output/remove_formulas.xlsx に保存されます。元データを上書きせず、新しいファイルとして出力するのが安全です。
結果削除のプレビュー:
4. 補足説明
(1)手作業との違い
Excel 上では「コピーして値貼り付け」すれば済みますが、大量のファイルを処理する場合は非効率です。Python を使えば数十ファイルも数分で処理できます。
(2)書式保持のメリット
財務や統計の帳票では罫線・背景色・フォント設定などの書式が重要です。ClearContent を使うことで書式はそのまま残り、計算式だけを削除できます。
(3)実務利用例
- 集計用の Excel は数式入りのまま社内管理
- 配布用の報告書は数式を削除して値だけに変換
こうすることで「内部用」と「外部共有用」を分けて安全に運用できます。
主要クラス・プロパティ・メソッド一覧
| クラス / プロパティ / メソッド | 説明 |
|---|---|
Workbook |
Excel ブック全体を表すクラス |
Workbook.LoadFromFile() |
Excel ファイルを読み込む |
Workbook.SaveToFile() |
Excel ファイルを保存する |
Worksheet |
ワークシートを表すクラス |
sheet.Rows.Count |
ワークシートの行数 |
sheet.Columns.Count |
ワークシートの列数 |
Range |
セルまたはセル範囲を表すクラス |
Range.get_Item(row, col) |
行列番号でセルを取得(1 から始まる) |
Range.HasFormula |
セルに数式があるかを判定 |
Range.FormulaValue |
数式の計算結果を取得 |
Range.Clear(ExcelClearOptions) |
指定したオプションでセルの内容を消去(書式は保持可能) |
Range.Value |
セルの値を設定または取得 |
ExcelClearOptions.ClearContent |
セルの内容(数式や値)を消去、ただし書式は保持 |
まとめ
この記事では Spire.XLS for Python を使って、Excel 内の数式を削除し、計算結果のみを残す方法を紹介しました。
この方法を使えば、数式の誤操作を防ぎつつ、報告用の静的なデータを効率よく作成できます。さらに Workbook、Worksheet、Range といった主要クラスや HasFormula、FormulaValue などのプロパティを活用することで、Excel の自動処理が一層便利になります。
