Excel:找出與給定總數相加的數字子集?

Excel:找出與給定總數相加的數字子集?

我有一列數字(假設是 A1:A100),我需要找到其中總和達到一定總數的子集。

答案1

這可以透過 Solver 插件* 實現。以下步驟在 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

例子


如果求解器花費很長時間,您可以透過刪除顯然不起作用的行來幫助它(總計以美元為單位,並且只有一行具有非零美分)


額外好處:透過為儲存格新增條件格式,您可以讓 Excel 自動反白您要尋找的儲存格。選擇要設定格式的所有儲存格,然後從(主頁標籤)>>(樣式群組)>>條件格式>>新規則中選擇「使用公式決定要設定格式的儲存格」。在公式中,輸入「=$B1=1」(無引號),如果B 列中的對應行為1,計算結果為true。綠色填充、 ETC)。

尋找重要行的另一種簡單方法是對 B 列進行 Z->A 排序,所有 1 都會出現在頂部。


*可透過以下步驟安裝求解器插件

  1. 按一下“Microsoft Office 按鈕”,然後按一下“Excel 選項”。
  2. 按一下“加載項”,然後在“管理”方塊中選擇“Excel 加載項”。
  3. 按一下“開始”。
  4. 在「可用的加載項」方塊中,選取「求解器加載項」複選框,然後按一下「確定」。 (如果「求解器外掛程式」未在「可用外掛程式」方塊中列出,請按一下「瀏覽」以找到該外掛程式。)
  5. 如果系統提示您電腦上目前未安裝 Solver Add-in,請按一下「是」進行安裝。

答案2

有一個低成本的 Excel 插件和匹配,這將突出顯示總計達目標總和的數字子集。

在此輸入影像描述

相關內容