- 締切済み
組み合わせを計算して別シートに表示する方法を教えてください。
組み合わせを計算して別シートに表示する方法を教えてください。 複数のアイテムの組み合わせ表を作成し足し引き演算結果を別シートに表示したいのですが、表示方法がわかりません。 「アイテム」、「組合せ」、「表示」の3つシートを作成 (1) 「アイテム」シートには、アイテム A, B ,C, D があり各数値をマニュアルで入力 A B C D 25 15 30 20 (2) 「組合せ」シートには、考えられるすべての組み合わせ表を作成 A B A -B B -D A -B C A B D A -B -C -D B C -C D ・ ・ ・ ・ (3) 「表示」シートには、計算結果として以下のように表示される A B 40 A -B 10 B -D -5 A -B C 40 ・ ・ ・ ・ となります。 できれば「アイテム」シート内で計算を行い、計算結果を同シート内にも計算の都度 数値を表示したいです。 とても初歩的な質問かもしれませんが、ド素人なのでどなたか教えていただけると助かります。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
#1です。#1では後で考えると、考えすぎたかな。 下記で単純化される A1:H2 にHLOOKUP用に記号と数対応のテーブルを作る。 A B C D -A -B -C -D BL 25 15 30 20 -25 -15 -30 -20 0 ーAなどは(シングルコーテーショ)続けてAでいれる。 後は A7:D7に記号があるとして E7に=IF(A7="",0,HLOOKUP(A7,$A$1:$I$2,2,FALSE)) H7まで横方向に式複写。 I7に=SUM(E7:H7) A7:I7の式を下方向に複写。 A7:H8 (--は空白セル) B C -D ーー 15 30 -20 0 25 A -B ーー ーー 25 -15 0 0 10
- nattocurry
- ベストアンサー率31% (587/1853)
解らないことがたくさんあるので、確認させてください。 Aはマイナスになることはありますか? 組み合わせの例の最後の「B C -C D」で混乱しているのですが、C と -C が両方存在することもありなのですか? ということは、A -A B -B C -C D -D という組み合わせもありなのでしょうか? なぜ、「組合せ」シートと「表示」シートを別に用意する必要があるのでしょうか? 「組合せ」シートと同じ内容を、「表示」シートにも書いた上でその計算結果を書くなら、「組合せ」シートは必要ないのでは? > できれば「アイテム」シート内で計算を行い、計算結果を同シート内にも計算の都度数値を表示したいです。 「アイテム」シート内で、どの組合せの計算をおこなって表示したいのでしょうか? A B C D 各数値の設定と、すべての組合せと、その計算結果を、1つのシートにおさめれば良いと思いますが、それだと何かまずいのでしょうか?
補足
質問ありがとうございます。 >Aはマイナスになることはありますか? はい、あります。 >A -A B -B C -C D -D という組み合わせもありなのでしょうか? はい、あります。 >なぜ、「組合せ」シートと「表示」シートを別に用意する必要があるのでしょうか? 確かに。「組合せ」シートと「表示」シートを別に用意する必要はありません。 「組合せ」シート内に表示で問題ありません。 >「アイテム」シート内で、どの組合せの計算をおこなって表示したいのでしょうか? 下記、imogasiさんから回答いただいた補足にも説明してますが、「アイテム」 シート内には数百行の数値が入力されているため、1行ごとに各組合せの計算結果を アイテムの最後の列の右側(10アイテムあるので「J」の右側ということになります) に表示させ、AutoFillですべての行の演算結果も1行目と同様に変更し、各組合せごとに 一旦、「分析」シート内の結果を各組合せとともに同じシート内(「組合せ」シートで 問題ありません)に表示したいと考えてます。 従いまして、あくまでも私が教えていただきたいことは下記でもご説明いたしました通り、 (1) 「組合せ」シート内A,-A,B,-B,C・・・の文字から「アイテム」シート内 の各数値を認識させ演算させたい。 (2) 各組合せの演算結果を「組合せ」シート内の右側(各アイテム数値の右側) に都度、表示させたい。 の2点です。何卒よろしくお願いします。
- imogasi
- ベストアンサー率27% (4737/17069)
符号の扱いからSUMPRODUCT関数の利用が頭に浮かんだ。 式を余り長くしないことを気にした。IF関数で場合分けをして式が長くなるなど好みではない。 ーーー HLOOKUP関数利用の表を作る A1:E2 B C D BL 15 30 20 0 BL列は空白セルが0になるよう、仕掛けたもの。 ーーーー 例データ (7行目からは意味は無い) A7から4列(4数の組み合わせ)とする。 マイナスとするデータの入力は、シングルクオテーション+マイナス記号+A-Dのいずれかの文字で入れるとする。 A1:D1までの文字と、演算項目の記号入力は、きっちりあわせて入力すること。半角全角大文字小文字の別など注意。 A7:D8 A列 B列 C列 D列 B C -D A -B ーーー 編集ー置換で空白を文字列「BL」に全て置換。BLは何でも良い。E1の値をそれにあわせること。 A列 B列 C列 D列 B C -D BL A -B BL BL ーーー E7に =HLOOKUP(SUBSTITUTE(A7,"-",""),$A$1:$E$2,2,FALSE) と入れてH7まで式を複写。 E8:H8まで式を複写。 結果 2行データ分 E列からH列 15 30 20 0 25 15 0 0 これで数字化できた(ただし絶対値) ーーー 次に符号付き数1を作る。 I7 に=IF(LEFT(A7,1)="-",-1,1) と入れてL1まで横方向に式複写。 I7:L7の式を、I8:L8まで式複写。 結果 2行分データ I列からL列 1 1 -1 1 1 -1 1 1 ーーーー 最終に結果 M7セルに =SUMPRODUCT((E7:H7)*(I7:L7)) M8に式を複写。 結果 上記の例で 25<ー 15+30-20 10<ー 25-15 ========= やはり関数では、作業(セル)列を使わないとなら無いだろう。 ーーー VBAでやればすっきりする家も知れない見込み。
補足
大変迅速なご回答ありがとうございました。 また、説明不足ですみませんでした。 確かに関数で答えを出すことは可能であること理解致しますが、 あくまでもVBAを使う必要があり困ってます。 教えていただきたい情報を纏めますと、 (1) 「組合せ」シート内A,B,C・・の文字から「アイテム」シート内 の各数値を認識させ演算させたい。 (2) 各組合せの演算結果を「組合せ」シート内の右側(各パターン数値 の右側)に都度、表示させたい。 補足しますと、「アイテム」シートにはA,B,C,D・・・と 列に10アイテムほどあり、行には数値が日々追加更新され るため数百行分の数値が入力されてます。 更には上記で説明してないもう一つのシートに月ごと、週ごと等々 の関数計算を行う「分析」シートを作成、最終的に「表示」シート内へ 各組み合わせと分析結果を1行づつ貼り付けていきたいというものです。 そのため、上記で ”各パターンの演算結果を「組合せ」シート内 の右側に表示させたい・・”と説明した理由は、全ての行の演算結果 を1行目と同様の演算式をVBAのAutoFillを使って演算結果を変更 する必要があり、また、その内容を一旦「分析」シート内で関数計算 を行い「表示」シートにその都度、貼り付ける必要がありました。 この作業はマクロの記録で問題なく作成できると思います。 従いまして、VBAを使って上記(1)、(2)の作業をどうすればいいか教えて いただけますと大変助かります。 よろしくお願い致します。
補足
ご回答ありがとうございます。 実は A B や A -B C ・・・等々の組合せの意味として、 足し引き演算になります。 例えば、A B -C の組合せであれば A+B-C となります。 つまり、25+15-20 となり、答えは 20 です。 いろいろとご回答いただいたにもかかわらず、不明確な 説明で失礼いたしました。