Excelで与えられた合計に等しい数値のすべての組み合わせを見つける
一連の数値から特定の合計に合計するすべての組み合わせを見つける3つの方法。
特定の合計に加わる値の組み合わせを見つけることは、データ分析で一般的な問題です。たとえば、特定の予算で購入できるアイテムのすべての可能な組み合わせ、または特定の要件を満たすためにリソースを割り当てるすべての可能な方法を知りたい場合があります。この記事では、ExcelソルバーとVBAを使用してタスクを達成する方法を検討します。また、大きなデータセットや複雑な制約を処理するときに発生する可能性のある各アプローチの潜在的な落とし穴と制限についても説明します。
Excelソルバーを使用した特定の合計に等しい数字の組み合わせを見つける
残念ながら、組み込まれたExcel関数のどれも、特定の合計に加わる数字を特定するのに役立ちません。幸いなことに、Excelは線形プログラミングの問題を解決するための特別なアドインを提供します。ソルバーアドインは、Excelのすべてのバージョンに含まれていますが、デフォルトでは有効になっていません。このツールに慣れていない場合は、Excelでソルバーを追加および使用する方法に関する優れた記事をご紹介します。
Excelでソルバーアドインをアクティブにした状態で、次の手順を進めます。
- モデルを作成します。
このために、1つの列(この場合はA3:A12)に数字のセットを入力し、結果のために数字の右側に空白の列を追加します(B3:B12)。別のセル(B13)で、これに類似した等式式を入力します。
=SUMPRODUCT(A3:A12, B3:B12)
- ソルバーアドインを実行します。
[データ]タブで、分析グループの[ソルバー]ボタンをクリックします。
- ソルバーの問題を定義します。
[ソルバーパラメータ]ダイアログボックスで、目的セルと可変セルを構成します。
- 設定された目的ボックスに、式セル(B13)のアドレスを入力します。
- Toセクションで、値の値を選択して、目的の合計値を入力します(この例では50)。
- Variableセルの変更ボックスで、結果を入力する範囲を選択します(B3:B12)。
- 制約を追加します。
制約、つまり、満たす必要がある制限または条件を指定するには、 [追加]ボタンをクリックします。 [制約の追加]ダイアログウィンドウで、結果の範囲(B3:B12)を選択し、ドロップダウンリストからビンを選択します。制約は自動的にバイナリに設定されます。完了したら、[OK]をクリックします。
- 問題を解決します。
[ソルバーパラメーター]ダイアログウィンドウに戻したら、設定を確認し、 [solve]ボタンをクリックします。
数秒(または数分)後、 [ソルバー結果]ダイアログボックスが表示されます。成功した場合は、キープソルバーソリューションオプションを選択し、[OK]をクリックしてダイアログを終了します。
その結果、指定された合計に合計する数値の横に1つの挿入があります。ユーザーフレンドリーなソリューションではありませんが、箱から出してExcelができるのは最高です。
視覚化のために、私は照明グリーンで望ましい合計を与えるセルを強調しました。
制限:Excel Solverは、せいぜい、特定の合計に等しい数字の1つの組み合わせだけを見つけることができます。
特定の合計とカスタム関数に等しいすべての組み合わせを見つけます
特定の値になる特定の数値セットからすべての可能な組み合わせを取得するには、以下のカスタム関数を使用できます。 UDFSを初めて使用している場合は、このガイドに多くの有用な情報があります。Excelでカスタムユーザー定義関数を作成する方法です。
この機能の仕組み
主な機能であるFindSumCombinationsは、小さなサブタスクを実装するいくつかの子会社機能を呼び出します。 SumupRecursiveCombinationsという名前の関数は、指定された範囲ですべての可能な合計を見つけ、ターゲットに到達するものをフィルターするコアアルゴリズムを実行します。 ArrayTostring関数は、出力文字列の形を制御します。さらに3つの関数( Sumarray 、 AddToArray 、およびCopyArray )が中間配列の処理を担当します。一時配列を作成するたびに、ソース配列から1つの要素を追加し、ターゲット合計に到達するかどうかを確認します。コアアルゴリズムはこのStackOverFlowスレッドから取得されます。共有してくれてありがとう!
構文
ユーザーの観点から見ると、カスタム関数の構文はこれと同じくらい簡単です。
FindSumCombinations(範囲、合計)どこ:
- 範囲は、テストする数値の範囲です。
- 合計は目標合計です。
注記!カスタム関数は、Dynamic Array Excel 365および2021でのみ機能します。
FindSumCombinations関数の使用方法:
- 上記のコードをワークブックのコードモジュールに挿入し、マクロ対応のワークブック(.xlsm)として保存します。ステップバイステップの指示はこちらです。
- 任意の空白のセルで、 FindSumcombinations式を入力し、 Enterキーを押します。すべての組み合わせを出力するのに十分な空のセルが右にあることを確認してください。そうしないと、式は#spillエラーを返します。
たとえば、A3の合計に等しい範囲A6:A15の数値のすべての可能な組み合わせを見つけるには、式は次のとおりです。
=FindSumCombinations(A6:A15, A3)
他の動的配列関数と同様に、式を入力すると、式は1つのセル(下の画像のC6)であり、結果を必要な数のセルに入力します。デフォルトでは、コンマ分離された文字列は連続して出力されます。
結果を列に返すには、カスタム関数をこのように転置に包みます。
=TRANSPOSE(FindSumCombinations(A6:A15, A3))
巻き装置に囲まれた配列の形で文字列を出力するには、次のように配列機能を変更します。
結果はこれに似ています。
制限:このカスタム関数は、動的配列Excel 365およびExcel 2021でのみ機能します。
特定の合計とVBAマクロに等しいすべての組み合わせを取得します
上記のカスタム関数は、数字の組み合わせを文字列として返します。個別のセルに各番号を持っている場合は、このマクロが役立ちます。このコードは、このブログでさまざまなExcelの問題を解決するためにユーザーが積極的に支援している別のExcelの専門家Alexander Trifuntovによって書かれています。
次のコードをワークブックに追加することから始めます。詳細な手順については、ExcelにVBAコードを挿入する方法をご覧ください。
次に、次の設計とプロパティを使用して、userform(挿入> userform )を作成します。
フォームのデザインを完了したら、フォームのコードを追加します。この場合、プロジェクトエクスプローラーのフォームを右クリックし、 [コードを表示]を選択します。
ヒント。フォームをゼロから再作成する代わりに、この投稿の最後にサンプルワークブックをダウンロードして、そこからコードモジュールとuserform1をコピーできます(マクロを別のワークブックにコピーする方法を参照)。すべてのワークブックでマクロにアクセスできるようにするには、個人のマクロワークブックにコピーします。
コードとフォームを配置すると、 Alt F8を押して、 FindAllCombinations Macroを実行します。
ポップアップするフォームで、次のものを定義します。
- ソース番号の範囲(A4:A13)
- 目標和(50)
- 宛先範囲の上部左セル(C4)。
出力範囲の上部左セルを指定するときは、少なくとも1つの空白の列(ヘッダー用)と十分な空白のセルがあり、右側にあることを確認してください。空白のセルが不十分な場合、既存のデータが上書きされます。
[OK]をクリックすると、以下のスクリーンショットに示すような結果が生成されます。
- C4:C6では、数値の組み合わせがコンマ分離値としてあります。
- 列f、g、およびhは、数字の同じ組み合わせを保持し、各数値は別のセルに存在します。
- D4には、目標和があります。
この形式の出力により、結果を簡単に確認できます - セルF13に合計式を入力し、さらに2つのセルに右にドラッグすると、数値の各組み合わせが指定された値(50)に追加されることがわかります。
制限:多数の大量のセットの場合、マクロはすべての可能な組み合わせを生成するのに少し時間がかかる場合があります。
利点:Excel 2010 -365のすべてのバージョンで機能します。 2つの形式の出力 - 別々のセル内のコンマ分離値と数字の文字列。
結論として、特定の値に等しい値のすべての組み合わせを見つけることは、幅広いデータ分析の問題を解決するための強力なツールです。うまくいけば、この記事により、このトピックをさらに探索し、自分の仕事で同様の問題を処理するための有用な出発点が提供されることを願っています。読んでくれてありがとう!
練習ワークブック
特定の合計に等しい組み合わせを見つける - 例(.xlsmファイル)
以上がExcelで与えられた合計に等しい数値のすべての組み合わせを見つけるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









