忍者ブログ

mshencity

Microsoft ExcelでREDUCE関数を使用する方法

以前は、Microsoft Excel で反復的な複数ステップのロジックを処理するには、VBA が唯一の方法でした。もうない。 REDUCE は、関数型プログラミングのパワーをセルに直接導入し、複雑で乱雑なデータを 1 つのきれいな結果に凝縮できるようにします。

不要な文字を削除する場合でも、動的検索エンジンを構築する場合でも、REDUCE を使用すると、スプレッドシートの成長に合わせて適応する高度なデータ エンジンを作成できます。







REDUCE 関数は、Excel for Microsoft 365、Excel for the web、および最新の Excel モバイル アプリとタブレット アプリを使用しているユーザーが利用できます。







REDUCE 構文: 雪だるま式のたとえ

REDUCE 関数は LAMBDA を必要とするため怖く見えるかもしれませんが、実際に視覚化すると、ロジックは非常に直感的です。構文は次のとおりです。

=REDUCE(initial_value,array,LAMBDA(a,v,calculation))

その仕組みを理解するには、雪玉が山を転がり落ちるところを想像してください。



  • 初期値 (オプション): これが出発点です。転がり始める前の雪玉の元のサイズです。これを空白のままにすると、Excel は配列内の最初の項目を開始値として使用します。


  • 配列: ここが坂道です。これは、関数が通過するセルの範囲です。


  • LAMBDA(a,v,...): これは、雪だるまに各ステップで何をすべきかを伝えるエンジンです。アキュムレータ (ある) は雪だるまそのもので、前の行の結果を次の行に引き継ぎます。値 (v) は新雪、つまり関数が処理している現在の行の特定の項目です。


  • 計算: これがロジックです。 Excel に雪だるまを取得するように指示しているのです (ある)、新しい雪を追加します (v)、結果を次のステップに渡します。


覚えておくべき重要なことは、REDUCE にはメモリがあるということです。すべてのセルを個別に調べる標準関数とは異なり、各ステップで何が起こったかを正確に把握します。























左側にラムダ アイコン、中央に Excel の数式、背景にぼやけたスプレッドシートが表示されたラップトップ。


















Excel で LAMBDA を使用して独自の関数を作成する方法




最も複雑な数式を簡略化して再利用します。






























簡単なウォームアップ: REDUCE を使用した反復合計

REDUCE を使用して「不可能な」タスクに取り組む方法を説明する前に、基本的な数学を使用して雪だるま式に実際に動作する様子を示します。次の例では通常 SUM 関数を使用しますが、REDUCE を使用して数値のリストを追加すると、アキュムレータ (ある) と値 (v)バトンを渡します。

という名前の書式設定された Excel テーブルがあると想像してください。 T_数値 1 ~ 5 の数字が含まれます。
























「Numbers」という名前の 1 つの列と、1 から 5 までの数字が個別の進行行を占める Excel テーブル。




それらを合計する公式は次のとおりです。

=REDUCE(0,T_Numbers,LAMBDA(a,v,a+v))























Excel で単一列の Excel テーブルに格納されている数値を加算するために使用される REDUCE 関数。




これが起こっていることです:















































































































































反復







アキュムレータ (ある







価値 (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 の真の力は、アキュムレーター (ある) はあらゆる種類のデータを保持できます。次の実際の例では、アキュムレータがどのようにテキスト文字列をスクラブしたり、論理ステータスを追跡したりできるかを示します。



実際の例 1: 動的な複数文字ストリッパー

Excel の表にコードのリストがあり、すべてのダッシュ、括弧、ドット、プラス記号、およびスペースを削除してコードをクリーンアップしたいとします。
























A 列に製品名、B 列にコード、C 列に空の「Cleaned」列がある Excel 表。




これを行うには、SUBSTITUTE 関数を相互にネストすることを検討してください。

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE((@Code),"-",""),"(",""),")",""),".",""),"+","")," ","")























Excel の入れ子になった SUBSTITUTE 式は、製品コードのスペースや不要な文字を除去するために使用されます。




ただし、この数式は読みにくく、タイプミスが起こりやすく、非常に壊れやすいものです。さらに、後でコードからコロンとハッシュタグも削除することにした場合は、ネストされた SUBSTITUTE 関数と括弧をさらに追加する必要があります。























Microsoft Excel アプリがインストールされたラップトップ。


















この 1 つのキーボード ショートカットにより、複雑な Excel の数式を簡単に作成できます




読めない数式の壁を、すっきりと整理されたチェックリストに変換します。




























REDUCE を使用すると、 配列 引数を使用して、削除する文字を指定します。これにより、Excel は記号のリストをループし、一度に 1 文字ずつテキストを消去するように指示されます。

まず、という名前のテーブルを設定します。 T_Chars 削除するすべてのシンボルをリストします。 6 行目にはスペースが含まれます。
























乱雑な製品コードを含む Excel 表と、それらのコードから削除される文字のリストを含む別の表。




次に、メインテーブルに次の式を入力して Enter キーを押します。

=REDUCE((@Code),T_Chars(Characters),LAMBDA(a,v,SUBSTITUTE(a,v,"")))























Excel で使用される REDUCE 関数は、別の表で識別された文字のコードをクリーンアップします。




仕組みは次のとおりです。



  1. 初期値(ある): 現在の行 ((@Code)) の乱雑なコードから始めます。これが元の状態の雪だるまです。


  2. 配列 (v): これは T_Chars(Characters) 列です。 Excel は、リスト内のすべてのシンボルを 1 つずつ調べます。


  3. ループ: ラウンド 1 では、REDUCE はコードを取得し、T_Chars(Characters) 列の最初の文字 (ダッシュ) を何も ("") に置き換えます。次に、ラウンド 2 では、すでに部分的にクリーン化されたコードを取得し、次の文字 (左括弧) を削除します。関数は、T_Chars(Characters) 列のすべての行を使い果たすまで、このサイクルを続けます。


後でコロンとハッシュタグも削除したい場合は、それらの文字を T_Chars(Characters) 列の最後に追加するだけです。同様に、すべての括弧を保持したい場合は、これらの行をテーブルから削除します。
























Microsoft Excel で別の表で識別された文字のコードをクリーンアップするために使用される REDUCE 関数。






実際の例 2: マルチカテゴリ検索エンジン

在庫リストを管理していて、説明に「危険」、「可燃性」、「壊れやすい」、「腐食性」、または「有毒」という単語が含まれるアイテムにフラグを付ける必要があると想像してください。
























A 列に製品、B 列に説明、C 列に空の「フラグ」列がある Excel 表。




ネストされた OR ステートメントを使用してこれを行うには、次のような複雑な式を構築する必要があります。

=OR(ISNUMBER(SEARCH("Hazardous",(@Description))),ISNUMBER(SEARCH("Flammable",(@Description))),ISNUMBER(SEARCH("Fragile",(@Description))))























さまざまな製品説明内のキーワードを検索するための、OR 式内にネストされた ISNUMBER 式と SEARCH 式。










この式ではシールドとして ISNUMBER を使用します。 SEARCH 関数で単語が見つからない場合は、#VALUE! が返されます。エラーが発生し、式全体が壊れてしまいます。 ISNUMBER はそのエラーをキャッチしてクリーンな FALSE に変換し、数式の実行を継続できるようにします。





これはそのままでも機能しますが、数式は耐えられないほど長く、新しいキーワードを追加する必要があるたびに、手動で数式を開き、新しい ISNUMBER(SEARCH()) 文字列を追加し、括弧のバランスを調整する必要があります。























表紙に Excel のロゴが入った本、その隣に機能アイコン、キーボードが付いているオフィス デスク。


















Microsoft Excel のブール論理の初心者ガイド




ブール値の恩恵を強化しましょう。




























代わりに、REDUCE を使用して、 配列 口論。そこで、という名前のテーブルを設定します。 T_ウォッチリスト 単一のキーワード列を使用し、製品テーブルに次の数式を入力します。







=REDUCE(FALSE,T_Watchlist(Keyword),LAMBDA(a,v,a+ISNUMBER(SEARCH(v,(@Description)))>0))























Excel で使用される REDUCE 関数は、別の表で識別されたキーワードを含む製品説明にフラグを立てます。




何が起こっているかは次のとおりです。



  1. 初期値(ある): FALSE から開始します。ループでそうでないことが証明されるまで、製品は安全であると見なされます。


  2. 配列 (v): これは T_Watchlist(Keyword) 列です。 Excel は、リスト内のすべての単語を 1 つずつ調べます。


  3. ロジック: ISNUMBER(SEARCH(v,(@Description))) は、一致するものが見つかった場合は 1 (TRUE) を返し、一致しない場合は 0 (FALSE) を返します。次に、数式はその 1 または 0 をアキュムレータに追加します (ある)。 >0 で終了するため、ループが一致を見つけてアキュムレータが 1 に達した瞬間、結果は残りの過程で TRUE のままになります。


T_Watchlist(Keyword) 列に 10 個の新しいキーワードを追加すると、REDUCE は新しい行を自動的に検出し、追加のループを実行し、フラグを即座に更新します。その結果、子守が必要なネストされた OR 式から、基準の変更に応じて進化する REDUCE 式に移行することになります。



なぜ VBA ではなく REDUCE を使用するのでしょうか?

これらのタスクに、なぜ VBA マクロや Power Query だけを使用すべきではないのか不思議に思うかもしれません。これらのツールは強力ですが、REDUCE には次の 3 つの利点があります。



  • ネイティブクラウドのサポート: VBA マクロは、Web 用 Excel や Excel モバイル アプリやタブレット アプリでは機能しません。マクロが有効なワークブックをブラウザで開く人と共有すると、ソリューションが壊れます。 REDUCE は、デバイスやプラットフォームに関係なく、すべての最新バージョンの Excel で機能するネイティブ関数です。


  • セキュリティ上の摩擦ゼロ: 多くの IT 部門は、セキュリティ リスクを伴う可能性があるため、XLSM (マクロ) ファイルをブロックしています。 REDUCE は標準の XLSX ファイル内に存在するため、ファイアウォールによってブロックされたり、セキュリティ警告が表示されたりすることはありませんので、ご安心ください。


  • 即時再計算: Power Query は大規模なデータセットには最適ですが、変更を確認するには手動で更新する必要があります。ただし、REDUCE はリアクティブです。新しいキーワードをウォッチリストに追加するか、商品コードのタイプミスを修正すると、結果が即座に更新されます。
























Lambda、コード タグ、中かっこ、拡張子 .xlsx などのフローティング プログラミング シンボルで囲まれた Microsoft Excel のロゴ。


















Excel は正式にプログラミング言語です: これが何を意味するか




LAMBDA と再帰のおかげで、お気に入りのスプレッドシート アプリが関数型プログラミング環境になりました。






























削減が常に答えであるとは限りません

REDUCE は非常に強力ですが、あらゆる状況に対応できる特効薬ではありません。他のツールを検討する必要があるシナリオは 2 つあります。



  • 大規模なデータセット: REDUCE はすべてのセルに対して計算ループを実行するため、特に複雑なループを実行している場合や、非常に大規模なデータセットを操作している場合には、スプレッドシートの速度が大幅に遅くなる可能性があります。このようなシナリオでは、通常、Power Query が最適なオプションです。


  • 複雑なデバッグ: コードを 1 行ずつステップ実行できる VBA とは異なり、REDUCE には専用のステップスルー デバッグ ツールがありません。数式の小さなセクションをテストすることはできますが、長いループでエラーの原因となった行を正確に特定することははるかに困難です。



ネストされた文字列から REDUCE のクリーンなロジックに移行することで、数式が短く、よりスマートになります。実際、REDUCE は、グリッド内の配列を処理するように設計された 3 つの強力な LAMBDA 関数の一部です。 MAP は組み立てラインのようなものです。範囲内のすべての単一セルに同じロジックを適用し、元のリストと同じサイズの新しいリストを返す場合に使用します。 SCAN は進行状況レポートに似ており、累計や計算の段階的な履歴を作成するのに理想的な機能です。





























































































OS








Windows、macOS、iPhone、iPad、Android








無料トライアル








1ヶ月















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

















PR

コメント

プロフィール

HN:
No Name Ninja
性別:
非公開

P R