はじめに
使っている人がほとんどいないことで有名なPython in Excelについて(だって、Pythonが使える人はExcelなんて使わないでしょ)、諸事情で初めて使ったときにつまづいた表題について備忘録としてまとめておきます。
参考サイトも少ないので、誰かの役に立てば思います。
まだまだ仕様の変更があると思われるので現時点での情報になります。
本ページに示した関数を記述したExcelファイルはここからダウンロードできます。
Python in Excelの動作環境
になります。
Python in Excelの基本動作
エディタの起動
操作しやすいようにPythonエディタを起動します。 「数式」タブの「エディタ」をクリックすると右側のサイドバーにPythonエディタが表示されます。

Pythonコードの入力方法
対象セルを選択した状態で、「数式」タブの「Python」をクリック、または、セルに「=py(」と入力すると、次図のようにセルに緑枠で「PY」と表示され、Pythonコードが入力可能な状態になります。 別の方法として、右サイドバーのPyhonエディタで「***にPythonセルを追加する」ボタンをクリックしする方法あります。

Pythonコードの作成、実行
Python in Excel のコアライブラリとして以下のモジュールが初期からインストールされています。
- Matplotlib. Import ステートメント: import matplotlib.pyplot as plt
- NumPy. Import ステートメント: import numpy as np
- pandas. Import ステートメント: import pandas as pd
- seaborn. Import ステートメント: import seaborn as sns
- statsmodels. Import ステートメント: import statsmodels as sm
参照サイト:オープンソース ライブラリと Python in Excel - Microsoft サポート
そのため、Pythonが入力可能な状態で下記コードを入力し、「control+enter」をクリックすると計算が実行され、セルに答えが表示されます。
np.array([1,2,3]).sum() # 6

関数の定義
関数はセルに定義すること可能です。 例えば、任意のセルに以下のコードを入力します。セルはNoneと表示されます。
def test(x): return x + 1

次に別のセルをPythonを入力可能な状態にして、以下を入力すると関数を呼び出すことができます。
test(1) # 2
同一Book内であれば、どのセルからも呼び出すことが可能です。
以上、基本動作の説明は終わります。機能は多岐にわたるようなので、随時共有して行く予定です。
セルのレンジをndarrayに変換する方法
基本ケース
下図のように、A1:B3のセルに適当な値を入力して、Pythonセル(C1)から参照します。
実行結果をPythonエディタで確認するとDataFrameと表示されています。つまり、ExcelのレンジはPython in ExcelではpandasのDataFrameとして扱われることがわかります。

ということは、以下のような処理でndarrayに変換し、各種処理が可能です。
df = xl("A1:B3") x = df.values x.sum() # 21
df = xl("A1:B3") x = df.iloc[:,0].values x.sum() # 6
注意:空白セルを含む場合
次の空白セルを含むケースを考えます。Pythonセルの参照範囲A1:B5まで広げると、取得したDataFrameは次図のように空白セルが0と表示されます。
xl("A1:B5")

通常、pandasのDataFrameでは空白はNaNと表示されますが、Python in Excelでは0として扱われるの?と思いきや、0と表示されるだけで実際はNaNのようです。
df = xl("A1:B5") df==0

df = xl("A1:B5")
df.isna()

そのため、dropnaメソッド等を使用して空白セルを削除することが可能です。その後は前項と同様の処理でndarrayに変換できます。
df = xl("A1:B5")
df.dropna()

関連記事
computational-sediment-hyd.hatenablog.jp