Excel:特定の合計に追加する数値のサブセットを見つけますか?


回答:


25

これは、ソルバーアドイン*で可能です。次の手順は、Excel 2007および2010で機能しました。

  1. 結果を保持するセルを指定します(この例ではC1)-これはターゲットセルであり、Excelがスクラッチ作業に使用できる列です(この例ではB1:B100)。
  2. ターゲットセルに、数式「= SUMPRODUCT(A1:A100、B1:B100)」(引用符なし)を入力します。これは、A1 * B1 + A2 * B2 + ...などの合計を計算します
  3. [ソルバーを開く]を選択します([データ]タブ、[分析]グループ)
  4. ターゲットセルは明白である必要があります(この例では$ C $ 1)
  5. 「等しい」に「値:」を選択し、目的の値を入力します
  6. 「セルの変更」に「$ B $ 1:$ B $ 100」と入力します(引用符は不要です。これらの値を自分で0に初期化する必要がある場合があります)。
  7. 変更可能なセルに制約を追加します。プルダウンで、「bin」(バイナリ)を選択します。これにより、これらのセルの値が0(対応するAセルを合計から削除)または1(対応するAセルを合計に追加)に制限されます。
  8. 「解決」をクリックして待ちます。あなたが探しているサブセットの一部である数は、B列に1を持っています

例


ソルバーに長い時間がかかる場合は、明らかに機能しない行を削除することで解決できます(合計はドル単位で、1行だけがゼロ以外のセントを持ちます)。


おまけ:セルに条件付き書式を追加することで、探しているセルをExcelで自動的に強調表示できます。([ホーム]タブ)>>(スタイルグループ)>>条件付きフォーマット>>新しいルールから、フォーマットするセルをすべて選択し、[数式を使用してフォーマットするセルを決定する]を選択します。式に「= $ B1 = 1」(引用符なし)と入力します。これは、B列の対応する行が1の場合にtrueと評価されます。形式には、必要に応じて何でも追加できます(太字、斜体、緑の塗りつぶし、等)。

重要な行を見つけるもう1つの簡単な方法は、列BをZ-> Aにソートすることです。1がすべて上に来ます。


*ソルバーアドインは次の手順でインストールできます

  1. Microsoft Officeボタンをクリックし、[Excelのオプション]をクリックします。
  2. [アドイン]をクリックし、[管理]ボックスで[Excelアドイン]を選択します。
  3. Goをクリックします。
  4. [利用可能なアドイン]ボックスで、[ソルバーアドイン]チェックボックスをオンにし、[OK]をクリックします。(ソルバーアドインが[利用可能なアドイン]ボックスに表示されていない場合は、[参照]をクリックしてアドインを探します。)
  5. ソルバーアドインが現在コンピューターにインストールされていないというメッセージが表示されたら、[はい]をクリックしてインストールします。

1
Excel 2013では、オプションメニューから[整数の制約を無視]をオフにする必要があります。そうしないと、0と1にINT以外の値が返されます
Omar Shahine '30

1
これを適切に機能させるには、次のようにします。1.セルC1の数式はsumPRODUCT(合計だけではない)である必要があります。2.列Bのセルにはすべてゼロ入力が必要です。

ありがとう!私にとって、古い手順はまだ機能しますが、配列数式機能に依存しないため、sumproductの方が好きです。
ネイトパーソンズ

とにかくすべての組み合わせを見つけるために...ソルバーによって見つけられた1つの解決策がありますが...他の解決策を見つける方法は??? 私の配列はここにあります:v = [1100、1105、11830、14790、2325、2455、2555、2935、3050、3150、3185、3370、3475、350、3530、3590、3680、3745、885、9624]合計= 43029 ... solution1 = [350、1100、2325、2455、2555、2935、3150、3745、9624、14790]、solution2 = [350、885、1100、1105、2325、2455、2555、3530、3590、3680 、9624、11830]
ihightower 2015

2

低コストのExcelアドインSumMatchがあります。これは、合計して目的の合計になる数値のサブセットを強調表示します。

ここに画像の説明を入力してください


1
こんにちはAIsoft、良い発見。次回はさらに情報を追加できます。
nixda 2012

@pnuts間違えた?AUD $ 30の意味がわかりません
nixda

@pnutsああ、それは良い点です。
nixda 2012

6
私自身への注意:AUD $ 30 = 30オーストラリアドル。固定列のあるExcelセル[AUD30]への参照ではありません...:D
nixda

1
明確な指示がないため、値札は欠点です。本当に、製品のWebサイトからの1文+ 1写真以上のもの。
ネイトパーソンズ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.