Index
AmazonのKindleセールで50%還元セールで買いました:)
pythonを使ったことがなくても問題ないように作られています。
最初の方の章でインストール方法から初期設定、VSCodeの設定まで丁寧に解説してくれています。
プログラミングやったことなくてもできると思いますが、変数くらいの知識があると読みやすいです。
Pythonでエクセルを操作する入門書といった感じ。
Pythonでエクセル触ってるけど、高度なことが知りたいという方にはちょっと簡単すぎるような気がします。
ちなみに本記事でやりたいことは載っていません:)
書いてあることを組み合わせたらできます!
下記のようなエクセルの表(果物.xlsx)があったとします。
AB列にはそれぞれ果物と金額が書かれています。
AB列からD1に入力された果物をA列から探し出し、E1にその金額を表示させます。
Excelでは下記のように関数を使ってことができます。
1 |
=VLOOKUP(D1,A1:B3,2,FALSE) |
その結果がE1に表示されています。
以下のようにかけます。
実行結果がE2に表示されています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import openpyxl wb = openpyxl.load_workbook(r"果物.xlsx") ws = wb.active fruitsList = {} #Excelからandroid日本語を取得する for row in ws.iter_rows(min_row=1): # 行からセルを1個ずつ取得し、処理をする fruitsList[row[0].value] = row[1].value ws["E2"].value = fruitsList[ws["D1"].value] wb.save(r"果物.xlsx") |
エクセルのファイルとpythonのソースコードが同じディレクトリにあることを前提としています。
一つずつ解説していきます。
1行目
1 |
import openpyxl |
これはpythonでExcelを操作する為のパッケージを設定しているところです。
openpyxlをインストールしていない方は先にインストールしておきましょう。
ターミナルで以下のコマンドを打つとインストールできます。
1 |
pip install openpyxl |
3行目
1 |
wb = openpyxl.load_workbook(r"果物.xlsx") |
果物.xlsxを開いてwbという変数に格納しています。
もしソースコードのある場所と別のディレクトリにエクセルがある場合は、相対パスや絶対パスで以下のように書くこともできます。
1 |
wb = openpyxl.load_workbook(r"../../果物.xlsx") |
4行目
1 |
ws = wb.active |
果物.xlsxの1枚目のシートをwsに格納しています。
下記のようにシートの名前を指定して開くこともできます。
1 |
ws = wb["シート名"] |
6行目
1 |
fruitsList = {} |
エクセルのAB列の内容を格納する為のDictionary型の変数を宣言しています。
よくわからないか人はAB列がここに入るのね!くらいの理解でOKです。
Dictionary型とはjavaでいうhashmap的な使い方ができるくらいの理解度です:)
Dictionary型の公式リファレンスはこちら
https://docs.python.org/ja/3/c-api/dict.html
9~11行目
1 2 3 4 |
#Excelからandroid日本語を取得する for row in ws.iter_rows(min_row=1): # 行からセルを1個ずつ取得し、処理をする fruitsList[row[0].value] = row[1].value |
ざっくりいうと
1行目から3行目までのAB列の内容を、
変数fruitsListにキーをA列、valueをB列して格納しています。
{りんご:100}みたいな感じで保存されています。
1 |
fruitsList[”りんご”] |
で100が返ってくる変数の出来上がりです。
13行目
1 |
ws["E2"].value = fruitsList[ws["D1"].value] |
エクセルのE2セルにセルD1の内容がA列にあればその金額を代入しています。
ここがVLOOKUPにあたる処理です。
15行目
1 |
wb.save(r"果物.xlsx") |
ここで変更内容を保存します。
開いたエクセルと同名のファイル名を指定すると上書き保存されます。
もちろん別ファイルとして保存も可能
前準備がめんどくさいですが、データの数が膨大になってきたりするとpythonで書いた方が快適に操作できました!
VLOOKUPってなぜか存在するはずの値が見つからなかったりして大変な思い出があるのですが、pythonを使えばそういった煩わしさから解放されました!!