0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Python で Excel の数式を削除して値だけを残す方法

Posted at

日常業務で利用する 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.CountColumns.Count を使って、すべてのセルをチェックします。
  • 数式の判定HasFormula プロパティでそのセルが数式かどうかを確認します。
  • 計算結果の取得FormulaValue で数式の計算結果を取り出します。
  • 数式の削除Clear(ExcelClearOptions.ClearContent) でセルの内容(数式)を消去。ただしセルの書式は保持されます。
  • 値の再設定Value に計算結果を代入し、静的なデータに変換します。

これにより、見た目は変わらず中身だけが「値」に置き換わります。


3. ファイルの保存

wb.SaveToFile("output/remove_formulas.xlsx")

処理後は output/remove_formulas.xlsx に保存されます。元データを上書きせず、新しいファイルとして出力するのが安全です。

結果削除のプレビュー:

Python で Excel の数式を削除して値だけを残す


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 内の数式を削除し、計算結果のみを残す方法を紹介しました。

この方法を使えば、数式の誤操作を防ぎつつ、報告用の静的なデータを効率よく作成できます。さらに WorkbookWorksheetRange といった主要クラスや HasFormulaFormulaValue などのプロパティを活用することで、Excel の自動処理が一層便利になります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?