• 締切済み

最適値を自動的に総当りで計算させたいのですが

最適値を自動的に総当りで計算させたいのですが たとえばA列に下記のような無作為なデータがあるとします。 A1 10 A2 15 A3 -2 A4 500 A5 -27 A6 4 A7 20 A8 -12 A9 15 . . . B列は B1に「A1+A2」 B2に「A2+A3」 B3に「A3+A4」 ・ ・ ・ というようにA列の「一行下」を足したものを表示させます。 そしてそのB列のSUMを求める時の話ですが 「一行下」「二行下」と条件を変化させると 当然B列のSUMも変化していきますが この時最大の数値になるのは条件「何行下」にすればよいのかを 自動的に総当りで計算させたいのですが どのようにすれば良いでしょうか?

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.5

考えている行数の一番下の行の次からのセルは、データが無いのだろうから、0と考えて良いなら (1)1つ下を足す場合 A1+2*(A2+A3+A4+・・・最後の行まで)最後行以下の0は考慮外に出来る。 (2)2つ下を足す場合 A1+A2+2*(A3+A4+・・・最後の行まで)最後行以下の0は考慮外に出来る。 (3)3つ下を足す場合 A1+A2+A3+2*(A4+A5+・・・最後の行まで)最後行以下の0は考慮外に出来る。 以下同じ。 これを、1倍の部分と、2倍の部分を関数式で求めて(あるいはVBAで求めて)両者を足したものを 別列(2つの値の合計列)に出し、その合計列のMAXをとれば良いように思う。 ーーー A1+A2 A2+A3 A3+A4 ・・・・ ======== A1+(A2+A2+A3+A3+A4+A4+・・)

fansasad
質問者

お礼

ありがとうございます。 参考にさせていただきます。

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.4

>B1に「A1+A2」 >B2に「A2+A3」 >B3に「A3+A4」 >・ >そしてそのB列のSUMを求める アタマの中でちょいと計算を並べ替えると =(A1+A2+A3)+(A2+A3+A4) 前半は固定,後半は何行ズラしたの分だけ全体をスライドした合計 というだけのお話になります。 で,ズラしたときに該当する「下のセル」が無いときにいったいどうしたいのか,説明が不足しています。 サンプル: 仮にA1からA10に元の数字が並んでいるとして ●下が無くても気にせず計算する C1に =SUM($A$1:$A$10,A1:A10) と記入し,C10までコピー貼り付ける C1の値:ズレがゼロだったときのB列の合計(A1+A1)+(A2+A2)+(A3+A3)… C2の値:ズレが1つのときのB列の合計(A1+A2)+(A2+A3)+(A3+A4)… C3の値:ズレが2つでのB列の合計(A1+A3)+(A2+A4)+(A3+A5)…  : が総当たりで計算できます。可能性としては,合計が最大となるズレが複数見つかる場合もあり得ますね。

fansasad
質問者

お礼

ありがとうございます。 参考にさせていただきます。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんにちは! 外していたらごめんなさい。 A1セルからデータがあり、 その行以下の最大値をその行のA列数値にプラスすれば良いわけですよね? もしそうであればB1セルに =IF(A2="","",A1+MAX(A2:$A$1000)) としてオートフィルで下へコピーではどうでしょうか? これでA列のその行の値+その行より下のある最大値をプラスした値が表示されると思います。 ※ 「何行下」を求めたい場合は B1セルの数式を =IF(A2="","",MATCH(MAX(A2:$A$1000),A2:$A$1000,0)) としてオートフィルで下へコピーしてみてください。 これでその行より何行下に最大値があるか表示されるはずです。 尚、データは1000行目まで対応できる数式にしてみました。 最初に書いたように的外れならごめんなさいね。m(_ _)m

fansasad
質問者

お礼

ありがとうございます。 参考にさせていただきます。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

一例です。 =SUM(B:B)、又は=SUM(INDIRECT("B1:B"&COUNT(A:A)))で如何でしょうか。

fansasad
質問者

お礼

ありがとうございます。 参考にさせていただきます。

  • DJ-Potato
  • ベストアンサー率36% (692/1917)
回答No.1

最後のデータはどうするのでしょうか。 A100までデータがあるとして、B100は  1)A101=0として、B100=A100とするのか、  2)B100そのものをデータとして無視するのか  3)循環させて、A101=A1とするのか 「n行下」の条件で 1)の場合 SUM(B1:B100) = SUM(A1:A100) + SUM(A(n+1):A100)  = 2*SUM(A1:A100) - SUM(A1:An) 2)の場合 SUM(B1:B100) = SUM(A1:A(100-n)) + SUM(A(n+1):A100)  = 2*SUM(A1:A100) - SUM(A1:An) - SUM(A(100-n+1):A100) 3)の場合 SUM(B1:B100) = SUM(A1:A100) + SUM(A1:A100) = 2*SUM(A1:A100) うしろのマイナス部分が最小値になるnが、SUM(B:B)の最大値ですね。

fansasad
質問者

お礼

ありがとうございます。 参考にさせていただきます。

関連するQ&A

  • ある条件下でIF関数により取り出した数値を計算する方法

    エクセル関数です。2つの数字の変化が A列  B列 100    1 103    1 109    1 120    1 105    -1 102    -1 120    1 123    -1 ・    ・ の時に,以下の2つの条件を満たす式を作る。(1)B列の数字を3行ずつ見てゆく。3行目までずっと1が続き,数字が変わらなければ(-1が出なければ)3行目のA列の数値(109)を取り出す。(2)数字を取り出してから次の3行目までの間でB列の数字が変わったとき(1→-1,-1→1)には,変わった行のA列の数値(105)を取り出す。次はB7なので120,次はB8なので123…と数字を取り出す度にリセットして,新たに3行の中から新しい数字を取り出す。 (頂いた回答) 3列使います。C4=IF((B3=B2)*(B4=B3)*(SUM(C$2:C3)=0)=1,1,0)。D4=IF(B4<>B3,1,0) E4=A4*(C4+D4)。 リセットする毎に,リセットした時点のA列の数字から取り出したA列の数字を引き算したいのですが,良い関数が思いつきません。

  • Googleスプレッドシートの自動計算

    Googleのスプレッドシートで自動計算をしたいです。 例えば A列の1行から順番に、100,200,300……と続いていくとすると、 B列の同じ行に1.25倍で自動入力されて、125,250,375……と表示されるようにできるのでしょうか?

  • 数式の入ったセル間の計算

    Excelの初心者です。 このような場合はどうすればいいでしょう? よろしくお願いします。 たとえば、 A1~A10までをSUMで計算し、B11~B20間でもSUMで計算。 A列の合計額が多いと仮定した場合、A列の合計からB列の 合計を-した数値を出したいのですが・・・・

  • Excel関数、計算結果の自動出力

    ややこしいので説明が長くなります。 数値を入れると計算結果がでるようなExcel関数があります。 条件が多いので多くのセルに分かれています。 例えば A1=A2+A3+B2+B3+B4+B5・・・ という関数があり、B列の数値がA2とA3の数値によって計算されます。 A2には…2~100(2の倍数) A3には…5~500(5の倍数) の数値が入ります。 これらのA2、A3の全組み合わせ5000パターンの計算結果を 表にまとめなくてはいけません。 (パターン1) A2:2 & A3:5 (パターン2) A2:2 & A3:10 (パターン3) A2:2 & A3:15 ・・・ (パターン98) A2:2 & A3:490 (パターン99) A2:2 & A3:495 (パターン100) A2:2 & A3:500 (パターン101) A2:4 & A3:5 (パターン102) A2:4 & A3:10 (パターン103) A2:4 & A3:15 ・・・ ・・・ ・・・ (パターン4999) A2:100 & A3:495 (パターン5000) A2:100 & A3:500 という具合でA2、A3の全組み合わせ5000パターンの計算を 一覧で出力することはできるのでしょうか。 現在はカット&ペーストで計算式全てを横一行にずらーっと並ぶように整理して、 フィルハンドルで全組み合わせの数値を入力し、 5000行かけて計算した結果を別シートにコピペしているのですが、 整理しても100列を超える計算式が何種類もあるため、その作業ですら大変なんです。 良い方法があったらご教授ください。

  • エクセルの時間計算について

    エクセルで時間の計算をしたいのですが、うまくできず困っています。 A列には 1315、747、など3~4桁の数値が、B列にも 1532、916など同じく3~4桁の数値が入っています。これはそれぞれ 13:15、7:47、15:32、9:16のように時刻を表しており、A列は活動開始時刻、B列は活動終了時刻となっています。 C列には「TEXT(A2,"0!:00")-TEXT(B2,"0!:00")」という数式を入力し、実質活動時間を計算しています。 このようなデータが約9000行あります。C列の活動時間を合計して、時間数を出したいのですが、どのような計算式を用いればよいでしょうか?SUMでは出ないようですので・・・ ややこしいですが、お知恵をお貸し下さい。よろしくお願いします。

  • エクセルでの計算式を教えて下さい。

    エクセルでの計算式を教えて下さい。 概要はある列のセルの数値と別のセルの数値の組合せによって、特定のセルの数値をコピーして別のセルにそれを表示させる。 具体的には、A列に入ってる数値と同じ行のB列に入ってる数値の組合せパターンにより、予め設定しておいたパターン別の数値をコピーしてそれをC列に表示させます。 つまりA列に1、B列に2という数値が入った時には、1と2の組合せパターンですよね。 Aが1、Bが2の組合せの時には33.5という数値が予めどこかのセルに用意してあり、それをコピーしてC列に表示する。 Aが5、Bが3の組合せの時には27.4という数値があり、それをC列に表示するといった具合です。 A列の数値は1~18、B列の数値も1~18のいずれかです。 組合せパターンは最大で324通りあり、組合せ別の数値には規則性はないので、予めどこかに記入しておきます。 この様な作業を出来る式を教えて下さい。

  • Excelで行数が増えた際の計算

    いつも、お世話になります。 色々考えましたが、解決できませんので、皆様の知恵を拝借願います。 あるExcelに入力した数値は以下の式にて合計値を求めます。 =sum(a1,a3,a5・・) =sum(b2,b4,b6・・) =sum(c1,c4,c7・・)  合計値は一定間隔にある数値を取得し、合計値を出力します。 悩んでいるのは、行が追加された場合には、合計値の計算式も手動にて直さなければいけないため、とても手間がかかっている点です。  この合計値の式を行が追加された際に自動的に、訂正を行うようにすることはできないでしょうか? よろしくお願いいたします。

  • 各個体に対する平均値の自動計算(VBA-マクロ)

    各個体に対する平均値の自動計算(VBA-マクロ)  VBAマクロのほぼ初心者です。 言葉だけではうまく説明できないので、画像を添付しました(データ例.jpg)。 ある列に入力されている各個体(A列)に対応する数値(B列)の平均値を自動計算したいです。 各個体のB列1行目は空白になっていて、それぞれの計算結果をそこに入力されるようにしたいです。 *各個体はすでに昇順で並んでいる状態です。 Do~Loopなど利用して色々試したのですが、なかなかうまくいきません。。 よい方法がありましたら、教えていただきたいです。 どうぞよろしくお願いいたします。

  • エクセルの計算

    みなさん教えてください。 今エクセルで、数値計算をしていて悩んでいます。 <悩み> 下記のような数値(約1500個)がA列にあり、下記条件に合致すれば 指定する計算式で計算し、B列に答えを出したいと思っていますが、う まくいきません。 IF関数を使いましたが0以上の場合しか指定できませんでした。 =IF(A:A>=0,(F:F*0.01)) みなさん教えてください。 よろしくお願いします。 <条件>計算式 A列にある数値が0以上の場合 : A列の数値*0.01 A列にある数値が0以下の場合 : A列の数値*0.5 <数値> A列 ------- 1 1 2 -1 -2 -5 1 5 3 ・ ・ ・

  • この表を自動で計算したいです。

    まず表の形式ですが、下記のようになっています。   A列     B列   C列 1 日付     金額    品目 2 2004/11/4   1234   仕入れ 3 2004/10/29  5678   経費 4 2004/11/15   484   雑費 5 2004/10/18  2334   経費 6 2004/11/6   1450   交通費 7 2004/12/1    34   仕入れ 8 2004/11/23  3333   仕入れ A列の日付はランダムで並んでおります。 行いたいことは 【2004年5月の経費の総額を自動計算で算出】です。 今まですと、C列の品目を無視して期間での金額の合計値を出してました。 その時の計算式は =SUMPRODUCT((YEAR(A2:A498)=2004)*(MONTH(A2:A498)=5)*B2:B498) です。 今回は条件にC列の品目加えたいのですがどうしても出来ません。 ご指導を御願いします。

専門家に質問してみよう