Python in Excel (03) データ参照 シート上の値
セルの値の参照
Pythonコード内でセルの値を参照することができます。
セルの値を直接参照する場合は、以下のようにマウスでセルB2を選択すると、Pythonコードに xl("B2") と表示されます。xlの中にエクセルのセルのアドレスを入れることになります。
エクセルのセル参照と同様に、セルをコピーするとセルのアドレスが相対的に変化します。
範囲参照
範囲の指定も、マウスで選択することができます。len関数で件数を求めてみます。
ただし、範囲選択で作成されるのは DataFrame です。そのままsumで合計を出すことができません。
そこで、データフレームをリストに変換して計算することになります。
範囲選択の時、ヘッダーも含めて選択すると、以下のような書き方ができます。
計算 | 式 |
---|---|
件数 | len(xl("A1:B6", headers=True)) |
合計 | sum(xl("A1:B6", headers=True).Age) |
この方が、はるかにわかりやすいでしょう。
テーブル選択
データをテーブルに変換してから選択すると、ヘッダーを取得することができません。
ここで、1つおまじないを付け加えてやる必要があります。
テーブルを選択するとき、テーブルの左上で斜め下矢印が出た状態でダブルクリックします。すると、Pythonコードには xl("テーブル2[#すべて]", headers=True)
と表示されます。これでヘッダー情報も含めたデータフレームを作成することができます。
この状態で、以下のように計算式を書きます。
計算 | 式 |
---|---|
件数 | len(xl("テーブル2[#すべて]", headers=True)) |
合計 | ssum(xl("テーブル2[#すべて]", headers=True).Age) |
データフレーム
範囲選択を行うと、DataFrame型になると説明しました。この型は、Pandasの型です。したがって、このDataFrameに対して、すぐにPandasの操作を行うことができます。
計算 | 式 |
---|---|
合計 | xl("テーブル2[#すべて]", headers=True).Age.sum() |
平均 | xl("テーブル2[#すべて]", headers=True).Age.mean() |
最大 | xl("テーブル2[#すべて]", headers=True).Age.max() |
最小 | xl("テーブル2[#すべて]", headers=True).Age.min() |
件数 | xl("テーブル2[#すべて]", headers=True).Name.count() |