
OS
Windows、macOS、iPhone、iPad、Android
無料トライアル
1ヶ月
Microsoft 365 には、最大 5 台のデバイスで Word、Excel、PowerPoint などの Office アプリ、1 TB の OneDrive ストレージなどへのアクセスが含まれています。
以前は、Microsoft Excel で反復的な複数ステップのロジックを処理するには、VBA が唯一の方法でした。もうない。 REDUCE は、関数型プログラミングのパワーをセルに直接導入し、複雑で乱雑なデータを 1 つのきれいな結果に凝縮できるようにします。
不要な文字を削除する場合でも、動的検索エンジンを構築する場合でも、REDUCE を使用すると、スプレッドシートの成長に合わせて適応する高度なデータ エンジンを作成できます。
REDUCE 関数は、Excel for Microsoft 365、Excel for the web、および最新の Excel モバイル アプリとタブレット アプリを使用しているユーザーが利用できます。
REDUCE 関数は LAMBDA を必要とするため怖く見えるかもしれませんが、実際に視覚化すると、ロジックは非常に直感的です。構文は次のとおりです。
=REDUCE(initial_value,array,LAMBDA(a,v,calculation))
その仕組みを理解するには、雪玉が山を転がり落ちるところを想像してください。
覚えておくべき重要なことは、REDUCE にはメモリがあるということです。すべてのセルを個別に調べる標準関数とは異なり、各ステップで何が起こったかを正確に把握します。

最も複雑な数式を簡略化して再利用します。
REDUCE を使用して「不可能な」タスクに取り組む方法を説明する前に、基本的な数学を使用して雪だるま式に実際に動作する様子を示します。次の例では通常 SUM 関数を使用しますが、REDUCE を使用して数値のリストを追加すると、アキュムレータ (ある) と値 (v)バトンを渡します。
という名前の書式設定された Excel テーブルがあると想像してください。 T_数値 1 ~ 5 の数字が含まれます。
それらを合計する公式は次のとおりです。
=REDUCE(0,T_Numbers,LAMBDA(a,v,a+v))
これが起こっていることです:
反復 | アキュムレータ (ある) | 価値 (v) | 論理 |
|---|---|---|---|
1 | の 初期値 引数は0です。 | 1 | 0+1=1 |
2 | 1 | 2 | 1+2=3 |
3 | 3 | 3 | 3+3=6 |
4 | 6 | 4 | 6+4=10 |
5 | 10 | 5 | 10+5=15 |
この関数はリストを終了し、最終結果 15 を返します。
REDUCE は反復動作のため、標準関数よりも Excel にとって負荷が高くなります。 SUM や AVERAGE など、速度に最適化された組み込み関数で機能する場合は、それを使用してください。 REDUCE は、各ステップが前のステップに依存する場合にのみ使用してください。
この単純な例では、雪だるまは足し算によって増加する数でした。しかし、REDUCE の真の力は、アキュムレーター (ある) はあらゆる種類のデータを保持できます。次の実際の例では、アキュムレータがどのようにテキスト文字列をスクラブしたり、論理ステータスを追跡したりできるかを示します。
Excel の表にコードのリストがあり、すべてのダッシュ、括弧、ドット、プラス記号、およびスペースを削除してコードをクリーンアップしたいとします。
これを行うには、SUBSTITUTE 関数を相互にネストすることを検討してください。
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE((@Code),"-",""),"(",""),")",""),".",""),"+","")," ","")
ただし、この数式は読みにくく、タイプミスが起こりやすく、非常に壊れやすいものです。さらに、後でコードからコロンとハッシュタグも削除することにした場合は、ネストされた SUBSTITUTE 関数と括弧をさらに追加する必要があります。

読めない数式の壁を、すっきりと整理されたチェックリストに変換します。
REDUCE を使用すると、 配列 引数を使用して、削除する文字を指定します。これにより、Excel は記号のリストをループし、一度に 1 文字ずつテキストを消去するように指示されます。
まず、という名前のテーブルを設定します。 T_Chars 削除するすべてのシンボルをリストします。 6 行目にはスペースが含まれます。
次に、メインテーブルに次の式を入力して Enter キーを押します。
=REDUCE((@Code),T_Chars(Characters),LAMBDA(a,v,SUBSTITUTE(a,v,"")))
仕組みは次のとおりです。
後でコロンとハッシュタグも削除したい場合は、それらの文字を T_Chars(Characters) 列の最後に追加するだけです。同様に、すべての括弧を保持したい場合は、これらの行をテーブルから削除します。
在庫リストを管理していて、説明に「危険」、「可燃性」、「壊れやすい」、「腐食性」、または「有毒」という単語が含まれるアイテムにフラグを付ける必要があると想像してください。
ネストされた OR ステートメントを使用してこれを行うには、次のような複雑な式を構築する必要があります。
=OR(ISNUMBER(SEARCH("Hazardous",(@Description))),ISNUMBER(SEARCH("Flammable",(@Description))),ISNUMBER(SEARCH("Fragile",(@Description)))) この式ではシールドとして ISNUMBER を使用します。 SEARCH 関数で単語が見つからない場合は、#VALUE! が返されます。エラーが発生し、式全体が壊れてしまいます。 ISNUMBER はそのエラーをキャッチしてクリーンな FALSE に変換し、数式の実行を継続できるようにします。
これはそのままでも機能しますが、数式は耐えられないほど長く、新しいキーワードを追加する必要があるたびに、手動で数式を開き、新しい ISNUMBER(SEARCH()) 文字列を追加し、括弧のバランスを調整する必要があります。

ブール値の恩恵を強化しましょう。
代わりに、REDUCE を使用して、 配列 口論。そこで、という名前のテーブルを設定します。 T_ウォッチリスト 単一のキーワード列を使用し、製品テーブルに次の数式を入力します。
=REDUCE(FALSE,T_Watchlist(Keyword),LAMBDA(a,v,a+ISNUMBER(SEARCH(v,(@Description)))>0))
何が起こっているかは次のとおりです。
T_Watchlist(Keyword) 列に 10 個の新しいキーワードを追加すると、REDUCE は新しい行を自動的に検出し、追加のループを実行し、フラグを即座に更新します。その結果、子守が必要なネストされた OR 式から、基準の変更に応じて進化する REDUCE 式に移行することになります。
これらのタスクに、なぜ VBA マクロや Power Query だけを使用すべきではないのか不思議に思うかもしれません。これらのツールは強力ですが、REDUCE には次の 3 つの利点があります。

LAMBDA と再帰のおかげで、お気に入りのスプレッドシート アプリが関数型プログラミング環境になりました。
REDUCE は非常に強力ですが、あらゆる状況に対応できる特効薬ではありません。他のツールを検討する必要があるシナリオは 2 つあります。
ネストされた文字列から REDUCE のクリーンなロジックに移行することで、数式が短く、よりスマートになります。実際、REDUCE は、グリッド内の配列を処理するように設計された 3 つの強力な LAMBDA 関数の一部です。 MAP は組み立てラインのようなものです。範囲内のすべての単一セルに同じロジックを適用し、元のリストと同じサイズの新しいリストを返す場合に使用します。 SCAN は進行状況レポートに似ており、累計や計算の段階的な履歴を作成するのに理想的な機能です。

Microsoft 365 には、最大 5 台のデバイスで Word、Excel、PowerPoint などの Office アプリ、1 TB の OneDrive ストレージなどへのアクセスが含まれています。