タグ: 基本

  • VLOOKUP関数の使い方

    表の中から対象のワードに紐付く情報を拾うLOOKUP関数。ここでは自分が使うことの多かったVLOOKUP関数をベースにLOOKUP、HLOOKUP関数の紹介をします。

    1.VLOOKUP関数とは

    LOOKUPとは「情報を検索する」という意味で検索ワードに紐づく情報を表示します。
    また頭につくVは 「Vertical:垂直」という意味で縦方向のことを指します。
    つまり縦列からワードを検索して、対象の行にある情報を表示するということです。

    VLOOKUP関数での検索イメージ

    2.VLOOKUP関数の使い方

    VLOOKUP関数の基本的な形は”=VLOOKUP(検索値, 範囲, 列番号, 検索の型)”となります。
    検索値 :主キーとなる値
    範囲  :検索値の列を含む検索対象の範囲
    列番号 :検索したい列が範囲の左端から何列目にあるか
    検索の型:近似一致のTRUE(非推奨)と完全一致のFALSE(推奨)のどちらかを入力

    ※VLOOKUP関数を使う上での注意点
     ・VLOOKUP関数は上から順に一番初めに条件と一致する値を取得する
     ・範囲は必ず検索値の列を左端にする
     ・検索の型でTRUE(近似一致)は対象を意図通りに絞ることが難しいのでFALSE推奨。

    3.絶対参照

    絶対参照とはオートフィルを使った時などにセル番号が動かないように固定することです。「$」を入力することで出来ますが、「F4」キーでも変えることが出来ます。

    4.HLOOKUPの使い方

    VLOOKUPには似た関数で「HLOOKUP」があります。
    VLOOKUPのVは 「Vertical:垂直」だったのに対して、
    HLOOKUPのHは「Horizontal:水平」を意味します。


    つまり横行からワードを検索して、対象の列にある情報を表示するということです。
    式の書き方は「VLOOKUP」と変わりません。

    5.終わりに

    今回はVLOOKUP関数をベースにVLOOUP、HLOOKUP関数の使い方を紹介しました。

    四則演算の関数に比べエラーがおこる要因が多いので、初めのうちは上手くいかないかもしれません。

    しかしこのようなデータを抽出する関数が使えると出来ることの幅が広がるのでぜひ挑戦してみてください。

  • 【基本】テンプレートの活用方法

    Excelには標準で多くのテンプレートが備わっています。用途にあったテンプレートを選べば時短になりますが、種類が多くマイナーなものもあるので、テンプレートの使い方、種類を紹介します。

    1.テンプレートの使い方

    Excelには図のように様々な用途のテンプレートが用意されています。頻繁に使うことは無いですが、1から自分で作るには時間がかかるので「こんな機能もあるんだな」と知っておくだけでも手間が省けます。

    図1 カレンダーテンプレート
    図2 課題の日程・進捗表テンプレート

    テンプレートを活用する手順は次のようになります。

    ①ファイルタブを選択
    ②「新規」を選択
    ③検索や用途から目的に合ったものを選ぶ

    図3 テンプレート作成手順

    2.カレンダー

    テンプレートは多くの数が用意されていますが、内容が似ていてデザインが違うというものも多くあります。そこで大まかな分類でいくつか紹介していきます。

    まずはカレンダーです。カレンダーにはイラスト付きや夏休み用などのものも用意されていますが、大きく分けると
    ・12か月が1枚
    ・四半期ごとにシートで分かれている
    ・1か月ごとにシートで分かれている(上記図1参照)
    ものがあります。

    また上記の分類からさらに土日祝日が書いてあるもの、週の始まりを何曜日にするか自身で設定できるなどの機能が備わっているものもあります。

    3.ビジネス向け

    ビジネス向けは仕事内容によっても欲しいテンプレートは異なると思いますが
    ・1日のスケジュール
    ・課題の日程、進捗表(上記図2参照)
    ・フローチャート
    ・勤務記録
    ・請求書、見積書
    ・損益計算書
    ・目標と結果の比較グラフ など
    今回の分類の中では1番種類が多いです。

    またブラウザページへ飛ぶQRコードを作成したり、企業としてお中元、お歳暮を贈っている取引先のリスト作成など少し変わったテンプレートもあります。

    4.個人向け

    個人向けテンプレートは家計簿(図4参照)の種類が豊富ですが、その他に
    ・買い物リスト
    ・献立表
    ・家族の予定も含めた旅行計画、日程表
    ・アドレス帳
    ・記録表(体重、血糖値、ランニング など)
    ・サービス比較表(例:ケータイ会社3社の料金比較) など

    図4 家計簿テンプレート

    他には赤ちゃんの成長記録や四則演算の問題作成をしてくれるドリルなど、お子さんがいる方におススメのテンプレートもあります。

     ○結婚式準備

    個人向けの番外編として結婚式の準備に使えるテンプレートも豊富にあるので紹介します。
    ・予算と内訳
    ・招待状のリスト及び出欠状況(図5参照)

    図5 招待客リストテンプレート

    5.学生向け

    学生向けテンプレートとしてレクリエーションなど大人数でのイベントに向けた次のようなものがあります。
    ・1日の行動予定(図6参照)
    ・連絡網
    ・シフト表
    ・イベント予算、出欠
    ・トーナメント表
    ・旅行日程

    図6 1日の行動予定テンプレート

    6.終わりに

    今回はExcelのテンプレート機能の種類を紹介をしました。メモ程度に内容が分かればいいなど、細かい見た目にこだわる必要がない場合はこの機能を利用して内容を充実させることに時間を使っていきましょう。

  • 【基本】対象ファイルをフォルダから選択する方法

    ネットコードの途中でファイルを選択する際、コードと同じ階層にあるファイル名のみを記載するものが多いと思います。しかしそれだと違うファイルを操作する度にコードを書き直さなくてはいけません。
    そこでここでは「tkinter」を使いファイル選択の画面からファイルを選ぶ方法を紹介します。

     

     

    1.アウトプット

    今回は対象のファイルをファイル選択画面から選ぶようなコードに書き換えます。。

     

    2.コードの紹介

    コードは次のようになります。動作は以前紹介したものと同じになりますが、今回は最後の完成ファイルもすでにファイルがあり選択するようになっています。もしもファイルを新規作成する仕様にしたい場合は、ファイルパスを書くようにしてください。

    import openpyxl
    from openpyxl import load_workbook
    import tkinter.filedialog
    import tkinter as tk
    
    
    #tkinterを動作させる基盤のウインドウ作成&非表示
    root = tk.Tk()
    root.withdraw()
    
    
    #読み込み先、書き込み先、完成のファイル選択
    filepath1 = tkinter.filedialog.askopenfilename(filetypes=[('Excelファイル','*.xlsx')])
    filepath2 = tkinter.filedialog.askopenfilename(filetypes=[('Excelファイル','*.xlsx')])
    filepath3 = tkinter.filedialog.askopenfilename(filetypes=[('Excelファイル','*.xlsx')])
    
    
    #それぞれのファイルパスに上記で選択したファイルを代入
    wb1 = openpyxl.load_workbook(filename=filepath1)
    ws1 = wb1['サンプル']
    
    wb2 = openpyxl.load_workbook(filename=filepath2)
    ws2 = wb2['フォーマット']
    
    
    for i in range(1,7):
        for j in range(1,7):
            copy = ws1.cell(row = i, column = j).value
            ws2.cell(row = i+2, column = j, value = copy)
            j += 1
            
        i += 1
    
    wb2.save(filename=filepath3)

    ファイルをフォルダから選択させるには次のように書き、選択肢にファイルの種類を指定してそれ以外は表示されないようにすることが出来ます。
    第一引数のはご自身が分かるように自由に書いて大丈夫です。

    tkinter.filedialog.askopenfilename(filetypes=[(‘Excelファイル’,’*.xlsx’)])

    第一引数に選択肢の説明、第二引数に拡張子を書きます。以下、例をいくつか紹介します。
     [(“すべてのファイル”, “*”)]
     [(“Excelファイル”, “*.xlsx”)]
     [(“CSVファイル”, “*.csv”)]
     [(“PDFファイル”, “*.pdf”)]
     [(“テキストファイル”, “*.txt”)]

     

    3.終わりに

    今回はプログラム中でファイルを指定する際にフォルダから選択できる「tkinter」を使った事例を紹介しました。ファイルパスを指定しないので他の人が違うファイルを操作する場合にもコードの書き換えが不要など、使い勝手がいいと思うのでぜひ活用してください。

  • 【基本】表示形式~0を表示させない~

    1.概要

    Excelで関数を使い集計内容を表にまとめていると、たまに0が多くて見難いため0の部分は空白にしたい時があります。
    ただデータの数としては残したいので消すことはできないということはありませんか?
    そんな時に指定範囲の表示形式を変更してデータとして残しつつ表示されない方法を紹介します。

    2.表示形式の変更

    3.終わりに

    今回はExcelの指定した範囲の表示形式を変えることで、0の入力データは残しつつ表示を消す方法を紹介しました。やり方はとても簡単なので、こんな機能もあるんだなということだけでも知ってもらえればと思います。

  • 【基本】Excel関数

    業務でExcelを使う際に数値を計算することもあると思います。その時にExcel上での計算・集計の方法をいくつか紹介します。


    1.四則演算

    まずは計算で基本となる四則演算(足し算、引き算、掛け算、割り算)の書き方です。
    足し算は複数選択して合算する場合は関数を使用した方が楽ですが、ここでは計算式に使用する記号一覧を紹介します。

    足し算:「+ 」  引き算:「 – 」  掛け算:「 * 」  割り算:「 / 」

    2.関数を用いた範囲指定

    学校のテストで5教科の合計点、クラスの平均点などはカウントする数が多いので、先ほど紹介したセルを指定する方法だと時間がかかります。そのような場合は関数を用いて範囲指定する際にマウスをドラッグすることで一度に計算が可能です。

    上図で意味が似ているCOUNTとCOUNTAについて説明します。

    COUNTは”数値”の数、COUNTAは”データ”の数をカウントします。
    なので上図でCOUNTとCOUNTAは同じ範囲を選択していますが、文字列データが含まれているため表示結果が異なります。

    3.ステータスバー

    数値の集計に使える手段として他にはステータスバーで確認する方法があります。
    集計できる種類は限られており、他を選択すると数値が消えてしまいますが、式の入力無しで対象範囲を選択するだけでExcel画面の右下に表示されるので数値を知りたいなど、ちょっとした確認を行うのに便利です。

    またステータスバー上で右クリックすることで表示内容を設定できます。

    4.終わりに

    今回はExcelで計算・集計をする方法をいくつか紹介しました。関数に関しては日付から曜日を算出、金利計算、三角比の算出など用途によってもっと種類がありますので、まずは今回紹介した方法で計算式の使い方に慣れていきましょう。

  • 【基本】グラフ作成:折れ線グラフ

    1.アウトプットイメージ

    まずはイメージを掴んでもらうため、完成グラフとコードを紹介します。

    import openpyxl
    
    #折れ線グラフ、適応範囲、軸の最大・最小値を設定するのに必要なクラスのインポート
    from openpyxl.chart import LineChart, Reference
    from openpyxl.chart.axis import Scaling
    
    
    #グラフの基となるデータファイルのロード
    wb = openpyxl.load_workbook('C:/Users/1/Desktop/python/openpyxl/折れ線グラフ作成.xlsx')
    ws = wb['折れ線グラフ']
    
    
    #軸の参照データを指定
    item_x = Reference(ws, min_col=1, min_row=2, max_row=7)
    item_y = Reference(ws, min_col=2, min_row=1, max_row=7)
    
    
    #グラフのプロパティ設定
    chart = LineChart()
    chart.height =10; chart.width = 15
    chart.y_axis.scaling = Scaling(min =100, max = 200)
    chart.y_axis.majorUnit = 25
    chart.title = '上期売上'
    
    
    #グラフの値を追加
    chart.add_data(item_y, titles_from_data=True)
    chart.set_categories(item_x)
    ws.add_chart(chart, 'E3')
    
    wb.save('C:/Users/1/Desktop/python/openpyxl/折れ線グラフ作成.xlsx') 

    2.コードの説明

    ※コード説明前の注意事項
    本記事ではopenpyxl 3.1.2の環境で実行しています。
    以前3.1.5で実行した際にx軸、y軸の数字が表示されないなど、意図通りに動かないことがありましたので、必要に応じて3.1.2をインストールしてください。
    pip uninstall openpyxl:現在のopenpyxlをアンインストール
    pip install openpyxl==3.1.2:3.1.2のインストール

    ここからコードの説明です。
    from openpyxl.chart import LineChart, Reference

    折れ線グラフ作成と参照範囲を指定する際に必要なクラスです。基本的に棒グラフを作成する際は使用します。

     

    from openpyxl.chart.axis import Scaling

    グラフ軸の範囲を指定する際に必要なクラスです。

     

    item_x = Reference(ws, min_col=1, min_row=2, max_row=7)
    item_y = Reference(ws, min_col=2, min_row=1, max_row=7)

    それぞれx軸、y軸の参照範囲を示しています。x軸がA2~A7、y軸がB1~B7のデータを参照しています。(col=列、row=行)

     

    chart = LineChart() :変数chartに折れ線グラフを定義。
    chart.height =10; chart.width = 15 :グラフのサイズを高さ10、幅15に指定。
    chart.y_axis.scaling = Scaling(min =100, max = 200) :y軸の表示範囲を100~200の範囲に指定。
    chart.y_axis.majorUnit = 25 :y軸の目盛の表示単位を25に指定。
    chart.title = ‘上期売上’ :グラフタイトルを定義。

     

    chart.add_data(item_y, titles_from_data=True)
    :取得した各月の値を追加。”titles_from_data=True”でB1行をグラフの値でなく表題と定義。
    chart.set_categories(item_x) :取得した月を横軸に登録。
    ws.add_chart(chart, ‘E3’) :グラフの左上をE3に設定。

    3.複数の折れ線グラフ

    棒グラフの種類の指定を変えることで積み上げグラフにすることもできます。

    コードは
    “item_y = Reference(ws, min_col=2, max_col=3, min_row=1, max_row=7)”
    と”max_col=3″を加えてy軸の参照範囲をB列~C列までに拡げるだけです。

     

    4.終わりに

    openpyxlでの折れ線グラフ作成のしかたを紹介しました。自分はグラフ作成のプログラムをたまにしか書かず、その度にうまくいかずに色々なサイトで調べていたので、同じような境遇の人がこの記事で問題解決できれば嬉しいです。

  • 【基本】グラフ作成:円グラフ

     

    1.アウトプットイメージ

    まずはイメージを掴んでもらうため、完成グラフとコードを紹介します。

    import openpyxl
    
    #円グラフ、適応範囲を設定するのに必要なクラスのインポート
    from openpyxl.chart import PieChart, Reference
    
    
    #グラフの基となるデータファイルのロード
    wb = openpyxl.load_workbook('C:/Users/1/Desktop/python/openpyxl/円グラフ作成.xlsx')
    ws = wb['円グラフ']
    
    aria = Reference(ws, min_col=1, min_row=2, max_row=8)
    num = Reference(ws, min_col=2, min_row=2, max_row=8)
    
    chart = PieChart()
    
    chart.height =10; chart.width = 15
    chart.title = '対象人数'
    chart.add_data(num)
    chart.set_categories(aria)
    ws.add_chart(chart, 'E3')
    
    wb.save('C:/Users/1/Desktop/python/openpyxl/円グラフ作成.xlsx') 

    2.コードの説明

    ※コード説明前の注意事項
    本記事ではopenpyxl 3.1.2の環境で実行しています。
    以前3.1.5で実行した際にx軸、y軸の数字が表示されないなど、意図通りに動かないことがありましたので、必要に応じて3.1.2をインストールしてください。
    pip uninstall openpyxl:現在のopenpyxlをアンインストール
    pip install openpyxl==3.1.2:3.1.2のインストール

    ここからコードの説明です。

    from openpyxl.chart import PieChart, Reference

    円グラフ作成と参照範囲を指定する際に必要なクラスです。基本的に円グラフを作成する際は使用します。

    aria = Reference(ws, min_col=1, min_row=2, max_row=8)
    num = Reference(ws, min_col=2, min_row=2, max_row=8)

    それぞれA列、B列の参照範囲を示しています。”aria”がA2~A8、”num”がB2~B8のデータを参照しています。(col=列、row=行)

     

    chart = BarChart() :変数chartに円グラフを定義。
    chart.height =10; chart.width = 15 :グラフのサイズを高さ10、幅15に指定。
    chart.title = ‘対象人数’ :グラフタイトルを定義。

    chart.add_data(num) :取得したB列の値を追加。
    chart.set_categories(aria) :取得した月を横軸に登録。
    ws.add_chart(chart, ‘E3’) :グラフの左上をE3に設定。

    3.終わりに

    openpyxlでの円グラフ作成のしかたを紹介しました。基本的な円グラフ作成のコードは短いですが設定できる項目は色々あるので、そちらは別途一覧として紹介したいと思います。

  • 【基本】グラフ作成:棒グラフ

    1.アウトプットイメージ

    まずはイメージを掴んでもらうため、完成グラフとコードを紹介します。

    import openpyxl
    
    #棒グラフ、適応範囲、軸の最大・最小値を設定するのに必要なクラスのインポート
    from openpyxl.chart import BarChart, Reference
    from openpyxl.chart.axis import Scaling
    
    
    #グラフの基となるデータファイルのロード
    wb = openpyxl.load_workbook('C:/Users/1/Desktop/python/openpyxl/棒グラフ作成.xlsx')
    ws = wb['棒グラフ']
    
    
    #軸の参照データを指定
    item_x = Reference(ws, min_col=1, min_row=2, max_row=13)
    item_y = Reference(ws, min_col=2, max_col=3, min_row=1, max_row=13)
    
    
    #グラフのプロパティ設定
    chart = BarChart()
    chart.height =10; chart.width = 15
    chart.y_axis.scaling = Scaling(min =0, max = 200)
    chart.y_axis.majorUnit = 50
    chart.title = '月別売上'
    chart.legend = None
    
    
    #グラフの値を追加
    chart.add_data(item_y, titles_from_data=True)
    chart.set_categories(item_x)
    ws.add_chart(chart, 'E3')
    
    wb.save('C:/Users/1/Desktop/python/openpyxl/棒グラフ作成.xlsx') 

    2.コードの説明

    ※コード説明前の注意事項
    本記事ではopenpyxl 3.1.2の環境で実行しています。
    以前3.1.5で実行した際にx軸、y軸の数字が表示されないなど、意図通りに動かないことがありましたので、必要に応じて3.1.2をインストールしてください。
    pip uninstall openpyxl:現在のopenpyxlをアンインストール
    pip install openpyxl==3.1.2:3.1.2のインストール

    ここからコードの説明です。
    from openpyxl.chart import BarChart, Reference

    棒グラフ作成と参照範囲を指定する際に必要なクラスです。基本的に棒グラフを作成する際は使用します。

     

    from openpyxl.chart.axis import Scaling

    グラフ軸の範囲を指定する際に必要なクラスです。

     

    item_x = Reference(ws, min_col=1, min_row=2, max_row=13)
    item_y = Reference(ws, min_col=2, max_col=3, min_row=1, max_row=13)

    それぞれx軸、y軸の参照範囲を示しています。x軸がA2~A13、y軸がB1~C13のデータを参照しています。(col=列、row=行)

     

    chart = BarChart() :変数chartに棒グラフを定義。
    chart.height =10; chart.width = 15 :グラフのサイズを高さ10、幅15に指定。
    chart.y_axis.scaling = Scaling(min =0, max = 200) :y軸の表示範囲を0~200の範囲に指定。
    chart.y_axis.majorUnit = 50 :y軸の目盛の表示単位を50に指定。
    chart.title = ‘月別売上’ :グラフタイトルを定義。
    chart.legend = None :凡例表示を無効。

    chart.add_data(item_y, titles_from_data=True)
    :取得した各月の値を加えています。”titles_from_data=True”でB1行をグラフの値でなく表題と定義しています。

    chart.set_categories(item_x) :取得した月を横軸に登録。
    ws.add_chart(chart, ‘E3’) :グラフの左上をE3に設定。

    3.積み上げ棒グラフにするには

    棒グラフの種類の指定を変えることで積み上げグラフにすることもできます。

    コードは”chart = BarChart()”の下に
    chart.grouping = ‘stacked’
    chart.overlap = 100
    と追加するだけです。
    また積み上げると数値が200を超えるので、y軸の範囲を0~350にしています。

    ・chart.grouping = ‘stacked’
    グラフの表示形式を積み上げ方式にする。この記載がないと先ほどの集合縦棒方式になります。

    ・chart.overlap = 100
    グラフ青塗り部分とオレンジ部分のラップ(重なり)の%を0~100の範囲で指定。100で縦並びに、0で下図のようにズレた積み上げグラフになります(デフォルト0)。

     

    4.終わりに

    openpyxlでの棒グラフ作成のしかたを紹介しました。グラフ作成時に設定できる項目は他にもありますが、他の形のグラフと共通しているものが多いので、そちらは別途一覧として紹介したいと思います。

  • 【基本】セルの書式設定

    openpyxlでセルの書式設定する方法を紹介します。Excelで設定できる項目はopenpyxlでもできますが、すべて紹介するには情報量が多いので、ここでは使う頻度の高いものの基本的な書き方、設定できる種類を紹介して最後にサンプルとして表作成を行ないます。

    1.各設定の書き方

    今回紹介する書式設定は基本的にオブジェクトをインポートしてプロパティを設定と流れが似ているので、まず各プロパティの設定のしかたを書きます。設定値はそれぞれデフォルトの値です。

    #フォント設定:書体、文字サイズ、太文字、斜体、下線、取り消し線、文字色(黒色)
    ws["A1"].font = Font(name='Calibri', size=11, bold=False, italic=False, underline=None, strike=False, color='000000')
    
    
    #塗りつぶし設定:塗りつぶしタイプ、塗りつぶし色
    ws["B1"].fill = PatternFill(patternType=None, fgColor='000000')
    
    
    #罫線設定:左辺、右辺、上辺、下辺すべて設定なし
    ws["C1"].border = Border(left=Side(border_style=None), right=Side(border_style=None),top=Side(border_style=None),bottom=Side(border_style=None))
    
    
    #配置:横位置、縦位置、折り返し表示、縮小して全体表示
    ws["D1"].alignment = Alignment(horizontal='general', vertical='bottom', wrap_text=False, shrink_to_fit=False)
    
    
    #表示形式:使用したい形式の記述のみ(デフォルトの場合記述不要)
    ws["E1"].number_format = 'yyyy/m/d'
    

    2.使用例

    それぞれプロパティには多くの種類がありますが、イメージを掴んでもらうため先にインポートから設定から設定変更、保存までをしたコードと結果を紹介します。

    from openpyxl import load_workbook
    #このページで説明する書式設定に必要なオブジェクトのインポート
    from openpyxl.styles import Font, PatternFill, Border, Side, Alignment
    
    wb = load_workbook('C:/Users/1/Desktop/python/openpyxl/書式.xlsx')
    ws = wb["書式設定"]
    
    #------------------------  本記事の紹介部分  ---------------------------
    
    #フォント設定
    ws["A2"].font = Font(name='HGPゴシックE', size=14, bold=True, italic=True, underline='double', strike=True, color='00FF0000')
    
    
    #塗りつぶし設定
    ws["C2"].fill = PatternFill(patternType='solid', fgColor='00FF0000')
    
    
    #罫線設定
    ws["E2"].border = Border(left=Side(border_style='thin'), right=Side(border_style='double'),top=Side(border_style='dashDot'),bottom=Side(border_style='hair'))
    
    
    #配置
    ws["G2"].alignment = Alignment(horizontal='right', vertical='top', wrap_text=True)
    ws["G3"].alignment = Alignment(horizontal='left', vertical='center', shrink_to_fit=True)
    
    
    #表示形式
    ws["I3"].number_format = 'yyyy"年"m"月"d"日"'
    ws["I4"].number_format = 'yyyy/m/d'
    
    
    #---------------------------------------------------------------------------
    
    wb.save('C:/Users/1/Desktop/python/openpyxl/書式.xlsx')

    上記のコードが正常に実行されると画像のように各種設定が変更されます。他の線種や色の設定も出来ますので、それらについても今後情報を追記していこうと思います。

    3.終わりに

    今回はセルの書式設定変更のイメージを掴んでもらうため、各設定の書き方や実行結果を紹介しました。今後他の種類や実践的な使い方(繰返し文を利用して表題の色を変えた表の作成など)も紹介していきたいと思います。

  • 【基本】セルの操作

    openpyxlでのセルの操作方法を紹介します。セルの値を別シートや別ファイルに書き写す場合に、今回紹介するセルの値の取得・書き込みはいわゆるコピー&ペーストとして使います。書き方が何通りかありややこしいので、サンプルコードと実行後の画面と共に紹介します。

     

     

    1.セルの値の取得

    シートの取得と同じようにセルの取得にも方法がいくつかあります。

    方法書き方例特徴
    aセルの番地で指定cell1 = ws[“C1”]・セルの指定が分かりやすい
    b列と行を引数で指定cell2 = ws.cell(row=1, column=3)・繰返し文を使うことで複数のセルを一度に処理できる
    c「b」で引数名を省略cell3 = ws.cell(1, 3)・コードが短くて済む
    ・慣れていないと間違えやすい
    上記3種類はすべて「C1」セルを指定

    セルの取得方法を紹介しましたが、実際にプログラムを書く際にはセルの”値”の取得をよく使います。上記のセルの取得だと指定したセルの番地情報を取得してしまい、Excelに入力することはほとんどありません。セルの値の取得だとセル内にある数値もしくは文字列を取得します。

    セルの値を取得するにはセルの取得コードの終わりに「.value」を書きます。セル取得コードの書き方は先ほど紹介したどの方法でも構いません。実際の使用例はセルの書き込みとあわせて次で紹介します。

    #セルの取得とセルの値の取得
    cell = ws["A2"]
    cell-value = ws["A2"].value
    
    #それぞれの出力結果(「操作」シートのA2に4月と入力されている場合)
    print(cell)        #出力結果: <Cell '操作'.A2>
    print(cell-value)     #出力結果:4月

     

    2.セルの書き込み・削除

    先ほどまでの取得だと変数にデータを「格納」しただけですので、データをExcelへ「出力」する必要があります。コピー&ペーストで言うと取得がコピー、書き出しがペーストとなります。

    書き込み方法は、「書き込みたいセル番地.value = 取得した値」と値を代入するだけです。

    ここまで紹介してきた内容を実行する場合のコードと結果は次のようになります。

    from openpyxl import load_workbook
    
    wb = load_workbook('C:/Users/1/Desktop/python/openpyxl/セル操作.xlsx')
    ws = wb["操作"]
    
    #セルの値の取得
    cell_a = ws["A2"].value
    cell_b = ws.cell(row=3, column=1).value
    cell_c = ws.cell(4, 1).value
    
    
    #セルの書き込み
    ws["C2"].value = cell_a
    ws.cell(row=3, column=3).value = cell_b
    ws.cell(4, 3).value = cell_c
    
    wb.save('C:/Users/1/Desktop/python/openpyxl/セル操作.xlsx')

    プログラムを実行して対象ファイルを開くと画像のように、A列の入力内容がC列に書き込まれています。パターンa~cとありますが、「1.セルの値の取得」で紹介した3パターンの書き方すべてを試しています。

    また今回指定したセル.valueに値を代入しましたが、以下のように代入値に「None」と書くと入力内容が削除されます。

    #セルの値の削除
    ws["C2"].value = None
    ws.cell(row=3, column=3).value = None
    ws.cell(4, 3).value = None

     

    3.終わりに

    Excel上で値の取得、書き込み、削除の紹介をしました。これらの操作はExcelを編集するうえで頻繁に使うので慣れておきましょう。書き方については3通り紹介しましたが、すべて覚える必要はありません。しかしパターンaはシンプルで覚えやすいですが、パターンb、パターンcは複数行を繰り返し文で操作する際に便利なので、後者の使い方に慣れておくことをオススメします。