- ベストアンサー
エクセル関数
エクセル関数で表の中から割り算の答えに合う組み合わせの数字を特定したいのですがよい方法があれば教えていただけませんでしょうか。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
回答No1です. もう解決されているかもしれませんが,質問者さんのやりたいことはある数字の組み合わせがあって,回答の値を入力して組み合わせを求める事ですよね? 補足に書かれている表であるなら単純な関数で検索する事は難しいですし,さらにはいくつかの組み合わせがあるので,複数個の組み合わせを抽出しなければなりません. そこで1つ提案ですが,やりたいことは割り算であれば分子の値,分母の値,答えの3つの列を用意して数値の最小・最大値および答えを入力して数値の中から答えが一致する組み合わせを出力する方法はどうでしょうか? 具体的にはVBAを使用します.例として 最小値:10 最大値:11 答え:1 この場合は 10/10 と 11/11しかありませんので組み合わせは 分子=10 分母=10 分子=11 分母=11 が出力されれば良いわけです. 組み合わせと答えを計算するマクロは Sub calc() Dim i As Single '答え Dim j As Single '分子 Dim k As Single '分母 Dim l As Integer '演算子 分子 Dim m As Integer '演算子 分母 Dim n As Integer '演算子 行 Range("A2:C1048576").Clear '前の計算結果の消去 j = Range("E2").Value k = Range("E2").Value n = 2 For m = Range("E2").Value To Range("E4").Value Step 1 For l = Range("E2").Value To Range("E4").Value Step 1 i = j / k Cells(n, 2) = j Cells(n, 3) = k Cells(n, 1) = i j = j + 1 n = n + 1 Next l j = Range("E2").Value k = k + 1 Next m End Sub 答えを出力するマクロは Sub filter() Dim lastRow As Long Dim myData As Range 'データ範囲 Dim myCriteria As Range '抽出条件 With Worksheets("Sheet1") 'データがあるシートをシート1とする lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row Set myData = .Range("A1", .Cells(lastRow, 3)) End With Set myCriteria = Worksheets("Sheet1").Range("F1:F2") Worksheets("Sheet2").Cells.Clear myData.AdvancedFilter Action:=xlFilterCopy, criteriarange:=myCriteria, _ copytorange:=Worksheets("Sheet2").Range("A1"), unique:=True End Sub これでSheet2に組み合わせが出力されると思います.
その他の回答 (2)
- nishi6
- ベストアンサー率67% (869/1280)
先ほど、2回目の質問に解答しましたが、説明不足の感があるのでこちらに追記します。(混乱しないように?) まず、解答で「分子」と「分母」を逆にして説明しています。逆にしてください。 質問を整理すると、 指定数値(X)=分子(C)/分母(M) 、これから数学的には、 分子(C)=指定数値(X)×分母(M) 分母(M)=分子(C)/指定数値(X) ですが、コンピューターでは、 C = X×M+ε1 (ε1は誤差) M = C/X+ε2 (ε2は誤差) になります。 これは指定数値に小数点以下の値があるからです。例えば、「0.1」はパソコンでは実際の数値は「0.1」ではなく、「0.1000000001・・・」や「0.099999998・・・」が実際の値です(IEEE754)。ExcelではさらにMicrosoftでの数値処理が行われています。 このため、解の候補は指定誤差以内としています。あまり誤差を小さくすると検出されなくなります。ご注意を。 また、もう少し考えると、 X=C/M = (k・c1・c2・・・c12)/(k・m1・m2・・・m12) = (c1・c2・・・c12)/(m1・m2・・・m12) c1・c2・・・c12、m1・m2・・・m12 は素数です。 各々最大12個(一番多いのが、2の6乗×2の6乗) 従って、分子、分母を通分した最小の2つの数値が見つかると、それらを定数倍した解がたくさんあることになります。これから、何か関数で答一発というのは難しそうです。 また、分子分母は高々12個の素数の積なので、24~100の数値を減らして計算できるかもしれませんが、その理屈を考える前に力づくで計算してみました。解答のプロシージャで数秒でした。 ご参考に。
- ryo_ky
- ベストアンサー率47% (112/237)
どういう表を作るかによりますが,単数もしくは複数の条件で検索して1つの答えを出す関数なら VLOOKUP関数やHLOOKUP関数(単数の条件)、SUMPRODUCT関数(複数の条件)ですね. もしよろしければ,具体的な表をお教え頂けないでしょうか? 例えば、A列が答え、B列C列が組み合わせみたいな感じで また組み合わせが複数あるのであれば、答えでフィルタリングすれば組み合わせがでるのでVBAとかでできますね.
お礼
有難う御座います。やはり私の説明不足です。補足の文章を投稿致しましたが、お教え頂けると助かります。
補足
早速のご回答有難う御座います。表と申しますのは行と列にそれぞれ24から100の数字を配し、それぞれの掛け合わせた数字をいれてあります。それで例えば割り算の答え0.581642512を求める組み合わせ2408/4140の分母と分子の数字を答えとして探したいのですが、この説明でご理解頂けるでしょうか。
お礼
ご回答有難う御座います。最初の回答を頂いてから日にちが経過しているにもかかわらず未だ解決しておりません。 私の理解不足により、また日常の仕事をこなしながらになっておりまして(言い訳です、すみません)とてつもなくありがたいご指導に応える事ができておりません。これが解決すると会社の財産として永遠に残ることになります。早く解決して御礼申し上げるべきところですが、今しばらくお時間を頂きたく思います。