• ベストアンサー

エクセル セルの組み合わせ

Wendy02の回答

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。 残るは、以下のようになりますね。 たぶん、そのままで、何もしなくてもよいとは思いますが、私は、以下のように、[並べ替え]てしまい、範囲を狭めました。 $C$1:$C8 で、それぞれを設定しなおしました。理由は、もう、ソルバーでは求められないからです。並べ替えは、意味があります。 80 221 233 237 307 325 403 487 こんどは、ソルバーでは、ぴったりがどうやらないようですから、今度はオプション側で、まず、[公差]は、10% にして、[精度] と[収束] を、共に、0.1 とし、[単位の自動設定]をチェック そうすると、 80  1 221  0 233  1 237  0.909307783 307  0 325  0 403  0 487  1 ------------------- 1015.505945 これでは用が足りませんので、273 ... 1 を入れ、487 ...0 をにして、 403 ...1にして、 80  1 221  0 233  1 237  1 307  0 325  0 403  1 487  0 ------------------- 953 こんなことをしていたら、面倒でしょうがないなって思いましたので、途中から、マクロに切り替えてしまいました。良かったら、最初から、お使いください。 以下を、[標準モジュール]に貼り付けてください。 TargetNum の部分に数字を入れてください。 後は、表の通りです。 Const TargetNum As Long = 980 Const DATARANGE As String = "B1:B8" '数値の範囲 Const CONTROLRANGE As String = "C1:C8" '結果の範囲 Dim m As Long     '母数 Dim n As Long     '抽出数 Dim Num() As Long    '抽出したn個の数 Dim NumSave() As Long Dim NearNum As Long Dim arItems As Variant Sub yCombin()   Dim i As Long, s As String   arItems = Range(DATARANGE).Value   m = UBound(arItems) - LBound(arItems) + 1   For n = 1 To m     ReDim Num(1 To n)     SeaarchNos 1, 1, 0     Erase Num   Next     Range(CONTROLRANGE).ClearContents   For i = 1 To UBound(NumSave)      Range(CONTROLRANGE).Cells(NumSave(i)).Value = 1   Next   MsgBox "Finish!" End Sub Function SeaarchNos(x As Long, c As Long, t As Long) As Long   Dim i As Long, j As Long, tt As Long   j = x: tt = t   For x = j To m     Num(c) = x     tt = t + arItems(x, 1)     If c = n Then       If Abs(TargetNum - NearNum) > Abs(TargetNum - tt) Then         NearNum = tt         ReDim NumSave(1 To n)         For i = 1 To n           NumSave(i) = Num(i)         Next       End If     Else       SeaarchNos x + 1, c + 1, tt     End If   Next End Function

noname#253624
質問者

お礼

お礼が遅くなり申し訳ありません。 今日出社し、早速してみたいと思います。 大変詳しく教えていただき助かりました。 ありがとうございました。

関連するQ&A

  • エクセル マクロでセルを自動移動

    例1のようになっているエクセル表があります。 データは右方向、下方向へ増えます。 Cの列以降は4つ単位でしかデータは増えません。 それを例2の表のように列A,Bのデータはそのままに Cの列以降の4つのセルを区切りに下の行に移動して、 空白の列まで言ったらA2の行以降を最後の行まで繰り返しするという マクロを書くことは可能でしょうか。 出来ましたらそのマクロを教えてください。 例1 A1 B1 C1 D1 E1 F1 G1 H1 I1 J1 K1 L1 M1 N1 A2 B2 C2 D2 E2 F2 G2 H2 I2 J2 A3 B3 C3 D3 E3 F3 G3 H3 I3 J3 K3 L3 M3 N3 例2 A1 B1 C1 D1 E1 F1 A1 B1 G1 H1 I1 J1 A1 B1 K1 L1 M1 N1 A2 B2 C2 D2 E2 F2 A2 B2 G2 H2 I2 J2 A3 B3 C3 D3 E3 F3 A3 B3 G3 H3 I3 J3 A3 B3 K3 L3 M3 N3

  • Excelで飛び飛びのセル(列)を参照したいのですが…その2

     ある「sheet1」で、G1="A",H1="B",I1="C",J1="D",K1="E",L1="F",M1="G",N1="H",O1="I",P1="J",Q1="K",・・というように文字が入力されているとすると、5列飛びの値A,F,K・・・(G1,L1,Q1・・・)が欲しいのです。そして、その値が「sheet2」に、C5=A,D5=F,E5=K,F5=P・・・となるようにしたいのです。ただ数値が5ずつ増加するのではなく、そのセルに入力されている文字列を参照したいのです。  それをまた、「sheet1」の、G2="A",H2="B",I2="C",J2="D"・・・の値でも同じ事をしたいのですが・・・。  よろしくお願いします。

  • エクセル2003 SUMIFの組み合わせ

    A列| B列|  C列|D列 |    E列  |   F列 4| 2012/4/16| H| 100 |   4月の計 |  5月の計 4| 2012/4/17| J| 100 | 5| 2012/5/12| J| 100 | 5|  2012/5/13| H| 100 | 上の表でA列には=month(B2)の関数で月だけ表示するようにしています。 4月のJの合計と5月のJの合計をE列、F列に出すにはどう関数を組めばよいですか? 以下の様に組みましたが、どこが違うでしょうか? =IF(A:A=4,(SUMIF(C:C,"J",D:D)),"")-----4月計 =IF(A:A=5,(SUMIF(C:C,"J",D:D)),"")-----5月計 よろしくお願いします。

  • エクセルで、縦のセルの数値を横方向に貼り付けたい

    Excel2000を使っています。 コピーとかではなく、関数などでできないのか教えて頂きたいのですが。 A   B  D    F  G   H  I  J K 商品 あ   4   商品 あ   4 5 10 6 商品 あ   5           7  2 商品 あ  10 商品 あ   6 商品 あ   7 商品 あ   2 ひとつのシートにA~Dの表と、F~Lの表があり、 D列の数値を、I~Lまでで、2段3段と横に表示 させたいのですが。 このような表がいくつもあり、コピーでなく 他に何かよい方法があるのではないかと思い 質問させていただきました。 宜しくお願いします。

  • 組合せVBA

    環境はExcel2002です A列に連番数字1から100が入力されていて B列の100行には数字のデータがあるとします ある目的の数値Xに一番近くなるB列の組合せをC列に表示したいのです…VBAで B列に表示するのはA列の連番です 『一番近くなる』の意味は2通りあって、両方の算出方法をご教示願います (1)目的の数値Xを絶対超えないで目的の数値Xに一番近くなる組合せ (2)目的の数値Xを必ず超えて目的の数値Xに一番近くなる組合せ

  • エクセルで決められた合計になる組み合わせを作成

    エクセルを使用し、決められた合計になるような数値の組み合わせを表示するようにしたいのですが、どのようにしたらよいか皆さん教えて下さい。 例えば、 B列に 100・50・70・62・58・70・・・と数値が入力されています。 C1に300と入力しておきます。 300になる組み合わせはどれとどれ・・・なのかというものを作成したいです。 多数ある場合は、全ての組み合わせを表示したいです。 表示例として B3とB5とB15・・・を合わせると合計C1が300になる、又は298又は302になるという表示をしたいのですがどのようにしたらよいでしょうか。 A列にコードを入力しているので数値の重複はありません。 宜しくお願い致します。

  • エクセルのマクロ記述について

    下記の処理をエクセルのマクロで行いたいのですが、どのように記述したよいか教えてください。 4行目から入力されている行まで下記の処理をマクロで行う。 1.J列のセル入力がCIRCLEの行で、B~E列の数値が同じセル間を結合する。 2.K列のセル入力がCIRCLEの行で、F~I列の数値が同じセル間を結合する。 3.J列のセル入力がOBLONG_XまたはOBLONG_Yの行で、B,D列及びC,E列の数値が同じ場合、B列をB列の数値XC列の数値とし、B~E列のセルを結合する。 4.K列のセル入力がOBLONG_XまたはOBLONG_Yの行で、F,G列及びH,I列の数値が同じ場合、F列をF列の数値XG列の数値とし、F~I列のセルを結合する。 5.J列のセル入力がOBLONG_XまたはOBLONG_Yの行で、B,D列及びC,E列の数値が同じでない場合、B列をB列の数値XC列の数値とし、B,C列のセルを結合する。又、D列をD列の数値XE列の数値とし、D,E列のセルを結合する。 6.K列のセル入力がOBLONG_XまたはOBLONG_Yの行で、F,G列及びH,I列の数値が同じでない場合、F列をF列の数値XG列の数値とし、F,G列のセルを結合する。又、H列をH列の数値XI列の数値とし、H,I列のセルを結合する。 7.J列のセル入力がSHAPEの行で、B~E列は何もしない 8.K列のセル入力がSHAPEの行で、F~I列は何もしない

  • Excelの計算式または関数について

    Excel2007を使用しています。  次のようなことをやりたいのですが、計算式または関数、または関数と計算式の組み合わせを教えていただきたくお願いいたします。 問題  例えばA列にA1からA10まで何らかの数値は入っていて、次にA11に何らかの数値を入力した場合、A11に入力した数値がA1からA10までのいずれかのセル入力されている数値と同じ場合にはB11のセルに「重複」と表示する。以下A12セルへの入力された数値はA1からA11までのいずれかのセルに入力されている数値と同じ場合にはB12のセルに「重複」と表示する。以下セルA13以下へ入力する数値についてもすでに入力済みのセルの数値と同様な比較を行って対応のB列のセルに「重複」と表示をする処理を行う。  以上のような処理を行いたいのです。よろしくお願いいたします。

  • エクセル計算式

       A    B    C    D    E    F   G   H   I   J    K    L  1 名前(1) 80.00  50.0  51.0 ×54.0 80.0  85.0  90.0  51.0   90.0  141.0  2 2 名前(2) 79.00  50.0 ×52.0 ×53.0  88.0 89.0 91.0 50.0  91.0 141.0 1 このとき、      C~EのMAXをIに(×の場合は00.0で計算)      F~HのMAXをJに(×の場合は00.0で計算)      (※C~Hの前には×を入れるためのセルあり)      I,J,K共にBの数値が小さいほうが上位に来る      (※I,Jの後ろには、順位を入れるセルあり)      Kは、I+J      Lは、Kの計に対する順位       列がずれていて見にくいです。すみません。 どなたか回答お願いします。

  • エクセル 条件の合うセルに自動入力するには

    多分、関数だけではできないと思いますが教えて下さい。   A B C D E F G H I J K 1 08/4 08/5 08/6 2 08  4  1 09 3 31 月 1000 3 08  5  1 09 4 30 年 18000 4 08  6  1 09 5 30 四半期 1500 A列~C列:年月日 D列~F列:年月日 G列:月/年/四半期 H列:お金  H2⇒毎月1000円と言う意味  H3⇒年間18000円と言う意味(自動で毎月にする)  H4⇒四半期1500円と言う意味(自動で毎月にする) やりたいこと! A列~H列へデータを投入すると (1)A2、B2に該当するI2から、D2、E2の該当するT2まで1000を自動投入 (2)A3、B3に該当するJ3から、D3、E3の該当するU3まで1500を自動投入 (3)A4、B4に該当するK4から、D4、E4の該当するV4まで 500を自動投入 というようなことはできないでしょうか? そして、下のようになればいいのですが...。   A B C D E F G H I J K 1 08/4 08/5 08/6 2 08  4  1 09 3 31 月 1000 1000 1000 1000 3 08  5  1 09 4 30 年 18000 1500 1500 4 08  6  1 09 5 30 四半期 1500 500 もともとの表の作りも悪いのかもしれませんので、表の作りを変えるのは問題ありません。 例えば ・年月はA列、B列に分けずに1つのセルでも問題なし。 ・逆にI1、J1はセルを分けても問題なし。 ただし、 ・I1からJ1、K1・・・は08/4から10/3の2年間程度あるものとする。 できるのでしょうか。 よろしくお願いします。