企業の売上をデータ集約したいときに、数字ではなく「兆/億/千万円」という漢字で表されている場合に、数字変換したい場合があると思います。
今回は、「str.maketransとtranslate」を活用することで、企業の売上の「兆/億/千万円」を数字変換し、エクセルに記入する方法を紹介したいと思います。
例題
まず、例題を考えてみます。
ある企業の2020年の売上が、「2兆500億円」だったとします。このとき、「2兆500億円」という漢字まじりの売上を、エクセルに数字のみで記入する方法を考えたいと思います。
考え方
「2兆500億円」は、「2兆+500億」と分けることができます。
・兆は10の12乗なので、「兆=1000000000000」
・億は10の8乗なので、「億=100000000」
これより数式に直すと「2*1000000000000 + 500*100000000」となります。
この変換と同じことをpythonで行う方法を考えたいと思います。
①str.maketransを活用
str.maketransを活用して、兆、億、円を、数字に一括変換します。
下記がコード例となります。
str.maketrans({'兆' : '*1000000000000+' , '億' : '*100000000' , '円' : '' })
‘兆’ を ‘*1000000000000+’ に変換
‘億’ を ‘*100000000’ に変換
‘円’ を ” (空白)に変換
しています。
str.maketransの使い方は、変換前の文字と変換後の文字の間に「:」を入れます。
また複数の文字を変換する場合は「,」で条件を増やしましょう。
注意点は、変換前は「1文字」しか指定できません。
変換後は「複数文字」を指定することができます。
(replaceでも同じ作業ができます。replaceは1文字ずつ取り出して変換する必要があるため、for構文が必要となり難しくなるのでお勧めしません)
②translateでstr.maketransを実行しましょう
ここでは、実際に「2兆500億円」を数式に変換します。
コードは下記となります。
Sale = "2兆500億円"
#企業の売上
Henkan = str.maketrans({'兆' : '*1000000000000+' , '億' : '*100000000' , '円' : '' })
#変換ルール作成
Sale_Formula = "=" + Sale.translate(Henkan)
#Saleを変換ルールで数式化しSale_Formulaと定義
print(Sale_Formula)
#数式を出力
------------------------------------------
=2*1000000000000+500*100000000
・Saleで、企業の売上を”2兆500億円”に定義
・Henkanにて、変換定義をstr.maketransで作成
・Sale_Formulaで、数式化した売上を定義
“=”はエクセルに記入した際に自動計算し数字にするためにあたまに付けています
translateの使い方は、「変換前.traslate(変換定義)」となります。
変換前「2兆500億円」を変換定義「Henkan」に従い「translate」で実際に変換しています。
・printで出力した結果「=2*1000000000000+500*100000000」となり、数式化できていることが分かります。
③エクセルに数式を記入
先ほどの数式化したSale_Formulaを、エクセルに記入すると完了です。
エクセルに記入する方法は下記となります。
import openpyxl #エクセル制御openyxlをインポート
wb = openpyxl.Workbook() #エクセル起動
wb = openpyxl.load_workbook(r"C:\.\test.xlsx") #test.xlsxを開く
sheet = wb.worksheets[0] #エクセルシートの1番目を選択
Sale = "2兆500億円" #企業の売上
Henkan = str.maketrans({'兆' : '*1000000000000+' , '億' : '*100000000' , '円' : '' })
#変換ルール作成
Sale_Formula = "=" + Sale.translate(Henkan)
#Saleを変換ルールで数式化しSale_Formulaと定義
sheet.cell(column = 1, row = 1, value = Sale_Formula)
#エクセルシートのA1にSale_Formulaを記入
wb.save(r"C:\Users\.\Desktop\test.xlsx") #上書き保存
wb.close() #エクセル閉じる
oprenpyxlを用いて、エクセルを起動し、売上「2兆500億円」を数式化「=2*1000000000000+500*100000000」したものを、エクセルシートのA1に記入しています。
記入後のエクセルを開くと、下記のようになります。
きちんとエクセル上で数式化「=2*1000000000000+500*100000000」が計算されて、数値表示されていることがわかります。
Pythonを早く身に付けたい人は
Python初心者はUdemy動画での勉強がおすすめです。
アメリカの現役エンジニアが、業務で使えるコーディングを基礎から丁寧に教えてくれます。
プログラミングの学習相談
プログラミングの独学は挫折する確率が70%と言われており非常に高いです。
専門用語が多く勉強の仕方も良く分からないのが原因です。独学での学習が捗らない方は学習方法の相談をプロにしましょう。
おすすめは無料で相談できる下記です。
★プログラミング学習で悩んでいる人
★ITエンジニア転職まで考えている人