Excelの表を分析する際、さまざまな数式や関数を使ってデータを計算し、追加の情報を得ることがあります。しかし、分析結果を表示、共有、再利用する際には、数式を含むセルを静的な値に変換して、データを簡略化し、計算結果が変更されないように保護し、データの移植性を向上させたい場合もあります。Pythonを利用すれば、数式や関数を一括で削除しつつ、データを変更せずに保持することが簡単に実現できます。本記事では、Pythonコードを使用してExcelセル内の数式を一括で削除し、その計算結果を保持する方法を紹介します。
本記事で使用する方法では、Spire.XLS for Pythonを使用します。PyPIからインストール可能です:pip install spire.xls
。
Excelの数式や関数を一括削除し、計算結果を保持する
作業シート内の使用済みの行と列をループ処理し、Worksheet.Range[]
を使ってセルを取得します。その後、セルに数式や関数が含まれているかどうかを判断し、含まれている場合はそのセルの値を計算結果に設定して、数式や関数を削除する方法をとります。
以下は具体的な手順です:
- 必要なモジュールをインポートします。
-
Workbook
オブジェクトを作成し、Workbook.LoadFromFile()
メソッドを使用してExcelファイルを読み込みます。 - ワークブック内のワークシートをループ処理し、
Workbook.Worksheets.get_Item()
メソッドを使用してシートを取得します。 - ワークシート内の行と列をループ処理し、
Worksheet.Range[int: rowIndex, int: colIndex]
プロパティを使用して特定のセルを取得します。 - セルに数式や関数が含まれているかどうかは、
CellRange.HasFormula
プロパティの値で確認できます。含まれている場合:-
CellRange.FormulaValue
プロパティを使用して、数式や関数の計算結果を取得します。 -
CellRange.Clear(ExcelClearOptions.ClearContent)
メソッドを使用してセルの内容をクリアします。 -
CellRange.Value
プロパティを使って、取得した計算結果をセルの値として設定します。
-
-
Workbook.SaveToFile()
メソッドを使ってワークブックを保存します。 - リソースを解放します。
コード例
from spire.xls import *
# Workbook オブジェクトを作成
workbook = Workbook()
# Excel ワークブックを読み込む
workbook.LoadFromFile("Sample.xlsx")
# すべてのワークシートを繰り返し処理
for sheetIndex in range(workbook.Worksheets.Count):
# ワークシートを取得
sheet = workbook.Worksheets.get_Item(sheetIndex)
# すべてのセルを繰り返し処理
for rowIndex in range(sheet.Rows.Count):
for colIndex in range(sheet.Columns.Count):
# セルを取得
cell = sheet.Range[rowIndex + 1, colIndex + 1]
# セルに数式があるかどうか確認
if cell.HasFormula:
# 数式の結果を取得
formulaValue = cell.FormulaValue
# セルの内容をクリア
cell.Clear(ExcelClearOptions.ClearContent)
# セルの値を数式の結果に設定
cell.Value = formulaValue
# ワークブックを保存
workbook.SaveToFile("output/ClearFormula.xlsx", FileFormat.Version2016)
workbook.Dispose()
本記事では、Pythonを使用してExcel内の数式や関数を削除し、その計算結果を保持する方法について説明しました。