2024年11月3日日曜日

ExcelでPyhton

会社のExcelで、インターネット接続環境ならPythonが使えるようになったみたい。
セルで=py(と打ち込むとpython入力モードとなった。

あらかじめ、pandasなどのライブラリを読み込んであり、excel範囲の取り込みにxl関数があるので、
xl("A1:F200")のExcel範囲指定とかtable定義を読み込みに使えるみたい。
範囲を指定すると、DataFrameが返ってくるよう。
そのセルをExcelで表示させると、そのセルを左上セルとして、Excelに表示できた。

手元に実機がないので以下は試していないけど、

sample_df=xl("A1:F200")
と変数sample_dfにおいて、
sample_df[['名前','年齢']] で表示列を絞ったDataFrameができたり、
sample_df.loc[:2,['名前','年齢']]で、3行2列のDataFrameができたり、
sample_df[sample_df['年齢']>20][['名前','年齢']で、条件で行を絞った、列挙した列分のDataFrameができたり、
sample_df['名前'] でSeriesができたり、
sample_df.plot()で、そのセルにグラフを描いてくれるのかな?

excelでの集計方法が多すぎて(増えすぎて)、どれを使ったらよいか迷いそう。
ざっと挙げても以下の5個。
1.ワークシート関数
 (普通のやつ,xlookupとその亜種,配列式(Control+Shift+Enterのやつ),最近ではスピル(結果の範囲が動的なものも扱える配列式みたいなもの?)も出てきたし、
  この中でも迷いそう)
2.ピボットテーブル
3.table定義フィルタやオートフィルターと組み合わせての表示部分のみで集計するワークシート関数
3.PowerQuery(M言語),PowerPivot(DAX)
 (モダンExcelっていうやつ?ExcelからPowerViewが消えて、この3つがPowerBIに移ったのでExcelでのPowerQuery,PowerPivotはExcelの存在感は薄れたか?)
4.Excelマクロ(マクロ実行で集計させたり、マクロで作成した関数をセルでワークシート関数のように呼び出したり)
5.Python

会社のExcelではまだExcelワークシート関数での正規表現が使えないので、機械的なテキスト編集の場合、私は外部のテキストエディタやPowerShellで正規表現の
置換を使って結果をExcelにペーストしているけど、これをExcel内のPythonで連携できるのかなぁ?
 Excelマクロ関数のセル内実行だと、依存セルの変更時にExcelマクロ関数を使ったセルの結果値の自動反映がうまくいかないことがあるので、Pythonも同じになりそう。