• ベストアンサー

エクセルでの抽出

数個の数字の中から、指定した合計になる数値を抽出したいのですが、無理があるでしょうか? 例えば 10     30      40   のなかで、50になるものを抽出     50     20     5     15   ピーマンの袋詰めのような感じで 100g詰めるには、どれとどれが必要か・・・みたいなことが出来る 計算式?関数があったら教えてほしいのですが・・・

質問者が選んだベストアンサー

  • ベストアンサー
  • losedog
  • ベストアンサー率66% (22/33)
回答No.2

関数で一発で,というのは無理だと思いますが,以下のようにすれば,マクロを使用しなくても抽出することはできると思います。 なお,下記の関数は,7つの数字から抽出する場合(=H列まで使用)を前提にしていますので,数値の個数が増える場合は,関数を適宜修正(個数=8なら,関数のH列をI列に修正)してください。 (1)A1のセルに,目的の合計値(この場合50)を入力する。 (2)B1,C1,D1,・・・・のセル(この場合H1のセルまで)に,数個の数字(この場合10,30,40,・・・)を入力する。 (3)B2,C2,D2,・・・・のセル全てに,「0」を入力する。 (4)B3のセルに, =IF(AND(C2=1,C3=0),IF(B2=0,1,0),B2) と入力し,(2)で数字を入力した列(この場合H列)の1列手前(この場合G列)までコピーする。 (5)(2)で数字を入力した最後の列(この場合H列)の3行目のセル(この場合H3のセル)に, =IF(H2=0,1,0) と入力する。 (6)A3のセルに, IF(SUMIF(B3:H3,1,$B$1:$H$1)=$A$1,"○","×") と入力する。 (7)A3のセル~最後の列の3行目のセル(この場合H3のセル)までをコピーし,B列~最後の列の数値が全て「1」になる行(この場合129行目)まで下方向にコピーする。 なお,何行目までコピーするかは,「2のn乗+1」(nは(2)で入力した数字の個数)で計算できます。 (この場合,2の7乗+1=128+1=129行目まで) こうすると,B列~最後の列のセルに「1」が入力されている列について,B1~最後の列の1行目のセルの数字の合計が,A1のセル(目的の合計値)と一致するかが,A列に○×で表示されます。

igaiaga
質問者

お礼

ありがとうございます。 できました(^^)/ 個数が増えると、行も増えるということですね。

その他の回答 (1)

  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.1

マクロ等で作るしかないですね。 作れないことはないと思います。

関連するQ&A