このページの本文へ

Windows Info 第486回

Excelがあればなんでもできる

2025年06月15日 10時00分更新

文● 塩田紳二 編集● ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

 日本のPCユーザーは表計算好きといわれている。ちょっとした計算もExcelを使う人は少なくない。そもそもExcelは、ワークシートの関数、特に一部の初等関数(logなど)や特殊関数(一部のみ)、統計、金融の関数が充実している。

 こうした関数を使い慣れてしまうと、コンピュータ言語の標準ライブラリなどの関数に満足できなくなることがある。もちろん、言語なので、関数の定義に従いプログラムで計算をすることは不可能ではない。しかし、数値計算や近似計算では、誤差を小さくするための手法などを駆使する必要があり、忙しいときに自分で書くようなものでもない。

 こうしたとき、Excelのワークシート関数をコンピュータ言語から直接呼び出して使う方法がある。Excelのワークシート関数というと、引数にセル範囲が必要で、ワークシートを新規作成して使わねばと思いがちである。

 しかし、ワークシート関数のほとんどは、引数に直接値(配列など)を渡すことができるため、ワークシートを読み込むことは必須ではない。ワークシートを読み込まなければ、コンポーネントとしてのExcelの起動時間も短縮され、メモリ消費も少なくなる。

Excelオブジェクトを作る

 ここでは、コンピュータ言語の1例としてWindows PowerShellを使う。もちろん自分で好みの言語を使って構わない。必要なのは、COMオブジェクトを生成して扱えることだ。言語自体にCOMオブジェクトを扱う機能はなくとも、標準ライブラリやサードパーティライブラリなどでCOMオブジェクトを扱える言語は少なくない。

 また注意が必要なこととして、外部から実行できるワークシート関数は、もともとExcel組み込みのVBA(Visual Basic for Applications)から実行することを想定している。このためVisual BASICの標準関数(sinやconなど)は含まれておらず、これらに関しては、利用言語自前の関数を使う。Windows PowerShellの場合、Mathクラス(https://learn.microsoft.com/ja-jp/dotnet/api/system.math?view=netframework-4.8.1#methods)に登録されている関数を使う。

 ExcelなどOfficeアプリケーションは、コンポーネントとして作られており、言語からCOMオブジェクトを作ることでExcelやWordなどの制御が可能になる。

 以下のリストは、Windows PowerShellからExcelのワークシート関数を使う基本的なパターンである。

# comオブジェクトの作成
$eobj = New-Object -ComObject Excel.Application;

# WorksheetFunctionオブジェクトを取り出す
$excel = $eobj.WorksheetFunction;

#ワークシート関数の利用
$excel.Average(1,2,3,4,5,6);

#終了処理
$eobj.Quit();
[System.Runtime.Interopservices.Marshal]::FinalReleaseComObject($eobj);

Excel

ExcelはCOMコンポーネントとして扱えるので、言語からCOMコンポーネントをオブジェクトとして利用できるなら、Excelを自由に操作できる。ここでは、Excelのワークシート関数を呼び出して使う例を考えている

 先頭のCOMオブジェクトを作るところは、言語により表記が異なるが、「Excel.Application」というCOMオブジェクトを生成すればよい。ここでは生成したオブジェクト($eobjに格納されている)から、WorksheetFunctionオブジェクト取り出し$excelという変数に入れておく。

 以後は、$excel変数を使ってワークシート関数を呼び出せばよい。この部分は、ほとんどの言語で表現がそれほど異ならないはずだ。オブジェクトのアクセスにドット記法を使う言語は少なくないからである。具体的には、作成したCOMオブジェクトから「Application.WorksheetFunction.<関数名>」を呼び出している。引数は、関数により異なる。

 ここで使える<関数名>に関しては、Excelの「WorksheetFunction オブジェクト」のページに記述がある(https://learn.microsoft.com/ja-jp/office/vba/api/excel.worksheetfunction)。

 最後に「Application.Quit()」でExcelを終了させたあと、「FinalReleaseComObject」で、メモリ中にあるCOMオブジェクトの参照カウントをゼロにしてメモリから消去する。このようにすることでExcelが実行で使ったメモリをすべて解放できる。

引数の渡し方

 Excelのワークシート関数の引数には、「数値」、「真偽値」、「文字列」、「日付データ」、「配列」(行または列範囲。ベクトル)、「行列」(矩形範囲)がある。ただし、多くのワークシート関数の引数は「バリアント型」として定義されているため、その表現は比較的自由にできる。たとえば、数値が必要な引数でも文字列として渡すことも可能だ。

 今回、言語として使ったPowerShellは、バリアント型を採用しているわけではないが、文字列や数値といったデータ型の区別がない。

 このことを利用すると、関数の引数の与え方は比較的自由だ。たとえば、真偽値の場合、"true"または"false"でも、PowerShellの$true、$falseでもかまわない。あるいは0以外の数値(真を表す)、0(偽を表す)を指定することもできる。日付に関しても、文字列を使ってExcel内で使うような表現でデータを渡すことができる。

$excel.Text($excel.EDate("2025/6/13",1),"yyyy-MM-dd")

 Excelでは、日付は内部的にはシリアル値として記録されていることに注意が必要。このため、日付を入力とする関数の結果は、シリアル値になる。

 Excelのワークシートでよく使うセル範囲は、行(A1:A5など)または列(A1:E1など)の範囲ならば、PowerShellの配列表現「@(1,2,3,4,5)」が利用できる。ワークシート関数を使うのにワークシートは必須ではないため、関数の引数には、データを直接渡すことができる。

 たとえば、直接引数を指定してもいいし、

$excel.average(@(1,2,3,4,5,6,7))

 PowerShellの変数を使って

$v=@(1,2,3,4,5,6,7)
$excel.average($v)

とすることもできる。

 Excelのワークシート関数でよく使う2次元のセル範囲(A1:E5など)は、2次元配列を使う。

# PowerShellで多次元配列を作る
$m1=New-Object 'int[,]' 2,2;
$m1[0,0]=2 ; $m1[0,1]=2 ; $m1[1,0]=2 ; $m1[1,1]=2
$m2=New-Object 'int[,]' 2,2;
$m2[0,0]=1 ; $m2[0,1]=2 ; $m2[1,0]=3 ; $m2[1,1]=4
$excel.SumSq($m1,$m2);
# ジャグ配列で代用する

$excel.SumSq(@((2,2,2,2),@(1,2,3,4)));

 しかし、言語により対応が異なるが、配列を要素とする配列(ジャグ配列。配列の配列。)を使う方が簡単だ。

$excel.SumSq(@((2,2,2),@(1,2,3)))

 引数は、一次元配列を表す“@(……)”の各要素が“@(……)になっている。

 ワークシート関数では、複素数を扱うこともできる。この場合、Complex関数を使って、複素数を作り、これを複素数関数の引数とするのが通常の方法である。複素数の絶対値を求めるImAbs関数では、以下のようにする。

$c1=$excel.Complex(2,3,"i")
$excel.ImAbs($c1)

 しかし、複素数の文字列表現「"2+3i"」を使うこともできる。

$excel.ImAbs("2+3i")

というのもPowerShellでは、Complex関数は文字列を返しているだけだからだ。

 数学的な関数のサポートは多くの言語では標準ライブラリを使うが、そのサポート範囲は言語の性格を反映してか、広範なものもあれば、最低限という場合もある。PowerShellはどちらかというと最小限と言える。こうした場合、Excelのワークシート関数を使って、広範な関数を利用することが可能になる。

カテゴリートップへ

本記事はアフィリエイトプログラムによる収益を得ている場合があります

この連載の記事
1
【整備済み品】富士通 ノートパソコン LIFEBOOK U9310 13.3型FHD(1920x1080) 超軽薄 ノートPC/第10世代 Core i5-10310U@1.7GHz/ 8GB メモリ/高速ストレージ SSD/Webカメラ/WIFI/Type-C/HDMI/win11&MS Office 2019 搭載 ビジネス 在宅勤務向け パソコン (メモリ:8GB/SSD:256GB)
【整備済み品】富士通 ノートパソコン LIFEBOOK U9310 13.3型FHD(1920x1080) 超軽薄 ノートPC/第10世代 Core i5-10310U@1.7GHz/ 8GB メモリ/高速ストレージ SSD/Webカメラ/WIFI/Type-C/HDMI/win11&MS Office 2019 搭載 ビジネス 在宅勤務向け パソコン (メモリ:8GB/SSD:256GB)
¥35,130
2
Apple 2026 MacBook Neo A18 Proチップ搭載13インチノートブック:AIとApple Intelligenceのために設計、Liquid Retinaディスプレイ、8GBユニファイドメモリ、256GB SSDストレージ、1080p FaceTime HDカメラ - シトラス
Apple 2026 MacBook Neo A18 Proチップ搭載13インチノートブック:AIとApple Intelligenceのために設計、Liquid Retinaディスプレイ、8GBユニファイドメモリ、256GB SSDストレージ、1080p FaceTime HDカメラ - シトラス
¥95,768
3
Apple 2026 MacBook Air M5チップ搭載13インチノートブック:AIとApple Intelligence、13.6インチLiquid Retinaディスプレイ、16GBユニファイドメモリ、512GB SSDストレージ、12MPセンターフレームカメラ、日本語キーボード、Touch ID - ミッドナイト
Apple 2026 MacBook Air M5チップ搭載13インチノートブック:AIとApple Intelligence、13.6インチLiquid Retinaディスプレイ、16GBユニファイドメモリ、512GB SSDストレージ、12MPセンターフレームカメラ、日本語キーボード、Touch ID - ミッドナイト
¥177,333
4
【整備済み品】 富士通 タブレット ノートパソコン ARROWS Tab V727 12.3インチ 中古 タブレット【Windows 11 】【MS Office2019 H&B 搭載 】第7世代 Core M3/ メモリ 4GB / SSD 128GB /無線LAN/HDMI/LTE/タッチペン 付属(整備済み品)
【整備済み品】 富士通 タブレット ノートパソコン ARROWS Tab V727 12.3インチ 中古 タブレット【Windows 11 】【MS Office2019 H&B 搭載 】第7世代 Core M3/ メモリ 4GB / SSD 128GB /無線LAN/HDMI/LTE/タッチペン 付属(整備済み品)
¥11,800
5
【整備済み品】 NEC 15.6型 ノートPC VX ノートパソコン/Windows 11 /MS Office H&B 2019/第8世代 Core i5-8350U / HDMI/WIFI/8GB/SSD 256GB/テンキー
【整備済み品】 NEC 15.6型 ノートPC VX ノートパソコン/Windows 11 /MS Office H&B 2019/第8世代 Core i5-8350U / HDMI/WIFI/8GB/SSD 256GB/テンキー
¥31,800

Amazonのアソシエイトとして、ASCII.jpは適格販売により収入を得ています。

ASCII倶楽部

注目ニュース

  • 角川アスキー総合研究所

プレミアム実機レビュー

ピックアップ
1
KIOXIA(キオクシア) 旧東芝メモリ microSD 128GB UHS-I Class10 (最大読出速度100MB/s) Nintendo Switch動作確認済 国内サポート正規品 メーカー保証5年 KLMEA128G
KIOXIA(キオクシア) 旧東芝メモリ microSD 128GB UHS-I Class10 (最大読出速度100MB/s) Nintendo Switch動作確認済 国内サポート正規品 メーカー保証5年 KLMEA128G
¥2,386
2
Anker PowerLine III Flow USB-C & USB-C ケーブル Anker絡まないケーブル 240W 結束バンド付き USB PD対応 シリコン素材採用 iPhone 17 / 16 / 15 / Galaxy iPad Pro MacBook Pro/Air 各種対応 (1.8m ミッドナイトブラック)
Anker PowerLine III Flow USB-C & USB-C ケーブル Anker絡まないケーブル 240W 結束バンド付き USB PD対応 シリコン素材採用 iPhone 17 / 16 / 15 / Galaxy iPad Pro MacBook Pro/Air 各種対応 (1.8m ミッドナイトブラック)
¥1,890
3
KIOXIA(キオクシア)【日本製】USBフラッシュメモリ 32GB USB2.0 国内サポート正規品 KLU202A032GL
KIOXIA(キオクシア)【日本製】USBフラッシュメモリ 32GB USB2.0 国内サポート正規品 KLU202A032GL
¥1,080
4
UGREEN USB Type Cケーブル PD対応 100W/5A 超急速充電 USB C ナイロン編み 断線防止 iphone17/16/15シリーズ/iPad/MacBook Pro/Galaxy S24/Matebook/iPad/Xperia等USB-C各種対応(1m, ブラック)
UGREEN USB Type Cケーブル PD対応 100W/5A 超急速充電 USB C ナイロン編み 断線防止 iphone17/16/15シリーズ/iPad/MacBook Pro/Galaxy S24/Matebook/iPad/Xperia等USB-C各種対応(1m, ブラック)
¥743
5
NIMASO ガラスフィルム iPad 第11世代(A16) 2025用/iPad 10.9インチ 第10世代 2022用 衝撃吸収 強化 ガラス 保護フィルム 指紋防止 ガイド枠付き NTB22I574
NIMASO ガラスフィルム iPad 第11世代(A16) 2025用/iPad 10.9インチ 第10世代 2022用 衝撃吸収 強化 ガラス 保護フィルム 指紋防止 ガイド枠付き NTB22I574
¥1,359
6
Anker iPhone充電ケーブル PowerLine II ライトニングケーブル MFi認証 超高耐久 iPhone 14 / 14 Pro Max / 14 Plus / 13 / 13 Pro / 12 / 11 / X/XS/XR / 8 Plus 各種対応 (0.9m ホワイト)
Anker iPhone充電ケーブル PowerLine II ライトニングケーブル MFi認証 超高耐久 iPhone 14 / 14 Pro Max / 14 Plus / 13 / 13 Pro / 12 / 11 / X/XS/XR / 8 Plus 各種対応 (0.9m ホワイト)
¥990
7
Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 ケーブル iPhone 17 / 16 / 15 /Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ホワイト
Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 ケーブル iPhone 17 / 16 / 15 /Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ホワイト
¥740
8
JAMJAKE iPad用ペンシル アップルペンシル代用ペン 2018年~2026年 iPad対応 タッチペン 超高感度 極細 スタイラスペン Type-C急速充電 傾き感知/磁気吸着/誤作動防止機能対応 軽量 耐摩 学生 子供 筆記 絵を描く デザイン用 ドローイング用
JAMJAKE iPad用ペンシル アップルペンシル代用ペン 2018年~2026年 iPad対応 タッチペン 超高感度 極細 スタイラスペン Type-C急速充電 傾き感知/磁気吸着/誤作動防止機能対応 軽量 耐摩 学生 子供 筆記 絵を描く デザイン用 ドローイング用
¥1,880
9
KIOXIA(キオクシア)【日本製】SDカード 128GB SDXC UHS-I Class10 読出速度100MB/s 国内正規品 メーカー保証5年 KLNEA128G
KIOXIA(キオクシア)【日本製】SDカード 128GB SDXC UHS-I Class10 読出速度100MB/s 国内正規品 メーカー保証5年 KLNEA128G
¥2,374
10
バッファロー マウス 無線 ワイヤレス 5ボタン 【戻る/進むボタン搭載】 小型 軽量 節電モデル 最大584日使用可能 BlueLED ブラック BSMBW315BK
バッファロー マウス 無線 ワイヤレス 5ボタン 【戻る/進むボタン搭載】 小型 軽量 節電モデル 最大584日使用可能 BlueLED ブラック BSMBW315BK
¥1,040

Amazonのアソシエイトとして、ASCII.jpは適格販売により収入を得ています。

デジタル用語辞典

ASCII.jpメール デジタルMac/iPodマガジン