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 2016 | Excel 2019 | Excel 2021 | Excel 2024 | Microsoft 365 |
|---|---|---|---|---|
| 非対応 | 非対応 | 非対応 | MAP/SCAN対応・REDUCEは365のみ | 対応 |