• ベストアンサー

エクセルで総当り

エクセル2003を使用しています。 総当りの計算がしたいのですが、どうすればよいのかわからないので 質問させていただきます。 セルA1、A2,A3,A4,A5…に数値があります。 セルA1とA2を計算、セルA1とA3を計算、セルA1とA4を計算… セルA2とA1を計算、セルA2とA3を計算… というふうに、総当りをしたいのですが (1)セルA1とA2を関数を使って計算したあとにオートフィルをすると セルA2とA3、セルA3とA4、セルA4とA5… で計算されてしまいます。 (1)の計算後に、セルA1とA3の計算をし、2つ分を囲み オートフィルを使用しても、上に述べた計算結果が出ます。 どうすれば、総当りの計算が出来るのでしょうか?? 説明が下手でわかりにくいかもしれませんが、よろしくお願いします。

noname#45506
noname#45506

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

  • ベストアンサー
noname#47864
noname#47864
回答No.1

絶対参照を使ってみてください。 数式を入力するときに、『=$A$1*A2』というようにアルファベットと数字の前に$ドルマークを付けます。 これでオートフィルをすると、A1*A3,A1*A4…と$を付けたところが固定されて処理されます。 アルファベットや数字の片方だけにつけることもできますので、うまく応用してみてください。

noname#45506
質問者

お礼

回答ありがとうございます。 エクセルは初心者なので、難しいですが 教えていただいた絶対参照を使ってみたいと思います。

その他の回答 (5)

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

こんにちは。 #2の回答者です。 >セルA1、セルA2…などにある数値は、既に計算した結果の数値です。 結果が数値で、A1から下に値が存在しているなら、私の書いた統一式を B1 ~右列にオートフィルで、数値が出てこなくなるまで、 =IF(ROW(A1)>ROWS($A$1:$A$5)-COLUMN(A1),"",OFFSET($A$1,COLUMN(A1)-1,)+OFFSET($A$1,ROW(A1)+COLUMN(A1)-1,)) こんどは、B1 ~右列の端までをオートフィルで、下に数値が出てこなくなるまで 行えばよいのですが、 >今まで手で計算していたのですが、数が多く、半月経っても半分も計算が終わらないのでエクセルでしようと思っています。 「計算し」と書かれてあっても、どんな演算式かも聞かされてはおりません。引き算・割り算なら、場合によっては、違う可能性もあるわけです。 ここで書かれた内容で応用が利かないようでしたら、もう一度、全体像から、具体的に話をしていただかないといけないかもしれません。

noname#45506
質問者

お礼

ありがとうございます。 何日かエクセルで頑張って格闘しましたが、結局難しくて挫折してしまいました。・゜・(ノд`)・゜・。 計算が多く、エクセルで計算していると自分でわけがわからなくなってしまい、挫折しました。 計算は、足し算・引き算・掛け算・割り算・二乗・√ 全てを使います。 教えていただいたのに、申し訳ないです。 また時間が出来ましたら、エクセルの勉強をしたいと思います。 ありがとうございました。

noname#79209
noname#79209
回答No.5

#4です。ゴメンなさい。 > 同じ数値は計算しない場合です。 と書きましたが、意味なかったですね。 1行目の計算式は、 誤: =INDIRECT("A"&COLUMN()+1,TRUE) 正: =INDIRECT("A"&COLUMN(),TRUE) と訂正します。左上から右下へかけての、同一数値同士の演算は無視してくださいね。

noname#45506
質問者

お礼

ありがとうございます。 何日かエクセルで頑張って格闘しましたが、結局難しくて挫折してしまいました。・゜・(ノд`)・゜・。 計算が多く、エクセルで計算していると自分でわけがわからなくなってしまい、 現在は手で一生懸命計算しています。 教えていただいたのに、申し訳ないです。 また時間が出来ましたら、エクセルの勉強をしたいと思います。 ありがとうございました。

noname#79209
noname#79209
回答No.4

計算対象となるセルがメチャクチャ多くないなら、 マトリクス表を別シートに作ってしまい、計算させるのはダメですか? 九九の表のイメージです。 元データがSheet1のA1~A13にあるとしたら、 Sheet2のA2に、 =Sheet1!A1 として、下にコピー Sheet2のB1に =INDIRECT("A"&COLUMN()+1,TRUE)....同じ数値は計算しない場合です。 として右にコピー。 あとは B2からM14(13行の場合)に計算式を書けばよいのでは? 例えば、総当たりのかけ算(本当はもっと複雑な式なのでしょうが)なら、 B2に =$A2*B$1 として、これをM14までコピーすれば良いでしょう。 とにかく、A列の値は「$A1」、1行目の値は「B$1」として計算式を作ればOKです。 同じ計算式なのでしょうから、B2に1tuだけ入力して、あとはコピーでいけます。 ただし、計算が複雑だったり、コピーするセルが結構多い場合は、B2に入れた式をコピーする前に、 「ツール」-「オプション」-「計算方法」で「手動」にチェックを入れておく方が無難です。 ご参考まで....

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

一応絶対参照にすればA列は動かなくなるので、それが答えです。 ーー しかし、こういう組み合わせや順列的計算は、エクセルでも限りがあるでしょう。 複写もそうそう自動的に複写ではできない局面が出てくるでしょう。 また式がシートのセルに沢山設定されるとエクセルの処理が、破綻するかもしれない。 ーー ですからプログラム(とりあえず身近なVBA)で繰り返し演算をする。 繰り返しのステートメントは、ネストできる(下記でFor-Nextの中にFor -Nwxtがあるような処理)ものが多いので、その形式を使う。 コード例 Sub test01() k = 1 For i = 1 To 5 For j = 1 To 6 Cells(k, "C") = Cells(i, "A") & Cells(j, "B") k = k + 1 Next j Next i End Sub 本当は、&のところは+-*/などが入り、a,b,cは数ですが 組み合わせが、判りやすいように記号でやってみています。 a x ax b y ay c z az d u au e v av ー w aw ー -  bx ー -  by         以下略 しかしこれとても、データ数・列数の増加によって、終るまでに大変な時間がかかる場合がある。 こういう面からして、エクセルは本格的に使えるものではないでしょう。

noname#45506
質問者

お礼

回答ありがとうございます。 エクセル初心者で、難しくて戸惑っています。 今まで手で計算していたのですが、数が多く、半月経っても半分も計算が終わらないのでエクセルでしようと思っています。 このやり方でも時間がすごくかかるのですね。 エクセルだと楽に計算できると思っていました↓↓甘かったです。

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

こんにちは。 #1さんで、回答は出ているようですが、私も考えてみました。 足し算、掛け算は同じように、組み合わせでできますが、割り算、引き算は、順列になるのではないでしょうか? こちらでは、足し算で作ってみました。   B      C       D      E =$A$1+$A2  =$A$2+$A3  =$A$3+$A4  =$A$4+$A5 これをぞれぞれ、フィルハンドルで下にコピーすればよいです。 それを、もうひとつ考えをひねって、統一式を作ってみました。 =IF(ROW(A1)>ROWS($A$1:$A$5)-COLUMN(A1),"",OFFSET($A$1,COLUMN(A1)-1,)+OFFSET($A$1,ROW(A1)+COLUMN(A1)-1,)) これをオートフィルで右と下にコピーすればよいかと思います。 ただし、組み合わせのときは、一応、=COMBIN(5,2) 5の中から2つを選ぶという計算で、組み合わせ数を調べたほうがよいですね。

noname#45506
質問者

お礼

回答ありがとうございます。 エクセル初心者で、難しくて戸惑っています。 初歩的なことだとは思いますが、 教えていただいた式というのはどこに記すればいいのでしょうか? セルA1、セルA2…などにある数値は、 既に計算した結果の数値です。 その数値の2つを使ってさらに計算をしたいのですが、 セルA1には既に式があります。 続けて式を書いてもよいのでしょうか??

関連するQ&A

  • エクセルのオートフィルについて

    エクセルのオートフィルについて 例えば、=SUM(A1:A2) という計算式を作ってオートフィルしますと、 次のセルには、=SUM(A2:A3) となってしまいます。 それを、 =SUM(A3:A4) =SUM(A5:A6) となるように、オートフィルすることは出来ますでしょうか?

  • エクセルでの、関数を教えてください。

    エクセルでの、関数を教えてください。 A1セルの数値の条件に応じた計算結果をB2セルに自動表示させたいです。 A1セルの数値が0~499の時は、B2セルに「7500」と表示 A1セルの数値が500~1999の時は、B2セルに「A1*15」の計算結果を表示 A1セルの数値が2000~3999の時は、B2セルに「A1*14」の計算結果を表示 A1セルの数値が4000~4999の時は、B2セルに「A1*13」の計算結果を表示 A1セルの数値が5000~7888の時は、B2セルに「A1*11」の計算結果を表示 A1セルの数値が8000~9999の時は、「A1*9」の計算結果を表示 A1セルの数値が10000以上の時は、「A1*8」の計算結果を表示 詳しく教えていただけると助かります。 よろしくお願いします。

  • エクセルのオートフィル機能

    A1のセルに、計算式(=C1/D1)の計算結果入力 A2のセルに、計算式(=C2/D1)の計算結果入力 A3のセルに、計算式(=C3/D1)の計算結果入力 というように、分母の参照セルを常にD1にして A1からA1000くらいまでオートフィル機能で入力したいのですが、A1からA3までを範囲指定してオートフィルすると、 A4のセルは(=C4/D4) A5のセルは(=C5/D4) A6のセルは(=C6/D4) A6のセルは(=C7/D7) ・・・・ というように、D列の参照セルが常にD1になってくれません。 オートフィルしたときに常にD1を参照するには どうすればよろしいでしょうか。 ご存知の方教えてください。 よろしくお願いします。

  • エクセルでの三択について

    エクセルでA1のセルに1と入力すると10を2を入力すると15を3を入力すると33をA1のセルに表示したいです。 LOOKUP関数を使えばできるのでしょうか。 また、表示した数値を計算式で使用したいのですが、どのようにしたらよいのでしょうか。

  • エクセル2013 SUMが求められない。

    エクセル2013 OS7です。 数量のSUMを求めたい。 数量の数字は他からコピーして印字してある。 SUMを求めたところ「0」となる。 数字が文字データと思い、VALUEで変換し、その後オートフィルをした。 が、VALUEしたセルのところは数値に変換されたが、オートフィルしたところは数値に変換されず 初めのVALUEしたところの数値が表示された。 オートフィルしたセルのVALUEの式をみると、オートフィルしたセルの番号が表示されている。 どうしたらよろしいのですか。教えてください。 2003ではこのようなことはなかった。 不得手なので表現がうまくありませんが宜しくお願いします。

  • Excelのオートフィルについて教えてください

    Excelで、表の一番上に数式を入れて下の行にもオートフィルをしたとき、 結果がオートフィル型ではなく連続データのように表示されてしまうことがあります。 しかし数式バーを見てみると下に行くにつれて数字はちゃんと変わっていて(正しい数式が表示されていて)、 もう一度関数のボタン(fx)をクリックしてみると、ちゃんとした結果が得られます。 これはどういう現象なのでしょうか。 関数で参照するセルが結合されていることは関係しているのでしょうか。 詳しい方、ご存知の方いらっしゃいましたらお手数ですがご回答いただければ、と思います。 宜しくお願いいたします。

  • エクセル2003でカレンダーを作成したのですが

    そのカレンダーに、誕生日に該当する人の名前を 出てくるようにしたいのですがどういった関数?計算式?を 使用すればいいのでしょうか。 ひとまず、A1セルに2010/1/1を入力し、下に =IF(MONTH($A$1)<>MONTH($A$1-WEEKDAY($A$1)+COLUMN(F1)+7*(ROW(F1)-1)),"",$A$1-WEEKDAY($A$1)+COLUMN(F1)+7*(ROW(F1)-1)) を入れて、あとはオートフィルでカレンダーを作りました。 別シートに、「名前」「誕生月」「日にち」が入ったデータはあるので、ここから引っ張ってこれるようにしたいのですが・・ 説明が下手で申し訳ありません。 ちなみにエクセルはほぼ初心者です。カレンダーもネットで調べて、やっとこさ作成しました。 別シートのデータを、「月と日付別々じゃなくて12/3みたいに 打ち直して、こういう関数つかってやればいいんじゃない?」 などなど、あればお聞きしたいです。

  • エクセルの計算結果を数値にしたい

    エクセルで関数を使って出した計算結果を計算式を抜いた結果のみを表示するようにしたいです。 例:セルa1からa10までを合計するとsum(a1,a10)となり数値が表示sれます。 それをセルa1からa10までを削除しても結果が変わらないように変更したいのです。 よろしくお願いします。

  • Excelのオートフィル機能に関して

    Excelに関して質問させてください。 おそらくオートフィル機能だと思うのですが、セルの右下にカーソルを合わせると、連続数字や計算式のコピーができる機能がありますよね?正確にはコピーではないのかもしれませんが… その機能を使って計算式を複数のセルに適用して、計算しているのですが、セルが6万行近くあり、マウスでのスクロールでは、大変時間がかかってしまい、不便さを感じております。 このオートフィル機能を速く適用させる方法、またはキーボードを使ってオートフィル機能を使用する方法を知りたいと思うのですが、ご存知の方教えていただけるとありがたいです。 できれば後者のキーボードを使ったオートフィル機能を使用する方法を教えていただきたいです。 よろしくお願いします。

  • エクセル2000です。

    エクセル2000です。 関数のオートフィル(連続データの作成)について 例えば =SUMPRODUCT(($A$1:$A$100=1)*($B$1:$B$100=2)) という関数がはいったセルを セルの右下でポインタが+になった状態で 下方向にドラッグした場合 セルのコピーではなく =1のところや、=2のところだけを 1.2.3.4.5・・・と増やしていくことは 不可能でしょうか? 不可能であれば何か別に便利な方法は ないでしょうか? ご教授お願いします。

専門家に質問してみよう