📊つかえる関数.com

VBAのForループ代わりにMAP/REDUCE関数で配列処理する方法は?

結論

MAP/REDUCE関数でVBAのループ処理を関数型スタイルで置き換え可能

マクロ・自動化上級·

詳しい解説

VBAのFor Each...NextやFor...Nextループによる配列処理は、Excel 365のMAP/REDUCE/SCAN関数で関数型プログラミング的に置き換えられます。MAP関数で各要素に同じ処理を適用、REDUCE関数で累積計算、SCAN関数で中間結果の記録ができます。例えば`=MAP(配列, LAMBDA(x, x*1.1))`で一括1.1倍にでき、VBAのようにループ変数やカウンタ管理が不要です。ただし365専用で、複雑なロジックは可読性が下がる場合があります。

執筆・検証:田中 けんた|Excel歴15年・MOS資格保持

バージョン対応

バージョン対応状況
Excel 2016Excel 2019Excel 2021Excel 2024Microsoft 365
非対応非対応非対応MAP/SCAN対応・REDUCEは365のみ対応