Excel2000で数値を並べ替える方法とは?

このQ&Aのポイント
  • Excel2000で数値を並べ替える方法を知りたい方へ、マクロやVBAを使用せずにデータをソートする方法をご紹介します。
  • A列が名称、B列が数値A、C列が数値B、D列がコストの表データを指定したコスト合計内で、数値Aと数値Bが8点で最大値になる組み合わせを別の列に並べ替えて表示する方法を教えてください。
  • 参考になるHPも見つけることができず、マクロやVBAを使用しない方法でExcel2000で計算結果からデータを並べ替える方法を教えていただきたいです。
回答を見る
  • ベストアンサー

Excel2000で計算結果から並べ替えたい

Excel2000で、並び替えを行いたいのですがマクロもVBAを使用したことがなく、どうしたらいいのかさっぱりわかりません。 参考になるようなHPも見つけることもできず、そもそも可能な処理かどうかもわからない状態です。 A列が名称 B列が数値A(変数) C列が数値B(変数) D列がコスト(固定値) という表のデータを、 指定したコスト合計以内で、数値A、数値Bが、8点で最大値になる組み合わせを別の列に並べ替えて表示したいのです。 自分で計算した、こういう形にしたいというものを画像として添付いたしております。 画像の左上、緑とオレンジの部分を入力すると右半分の並べ替えた表を表示したいのです。 よろしくお願いいたします。

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

  • ベストアンサー
回答No.2

計算速度を改善とちょっと修正 Sheet2!AD1セル =IF(AC1=0,0,IF(AC1<=INDEX(Sheet1!$B$3:$C$3,$AF$1),MMULT((P1:AB1>0)*1,INDEX(Sheet1!$B$6:$C$18,,$AF$1)),0)) Sheet2!AF1セル =MATCH(AE1,{"コストA","コストB"},0) 以下 Sheet1に移り G6セル =INDEX(Sheet2!$A$1:$M$8191,Sheet2!$AF$3,ROW(A1)) H6セル =SUM(G6,H5) 下へオートフィル J6セル 1 下へ連番 K6セル =IF($H$18<$J6,"",MATCH($J6,$H$6:$H$18,0)) L6セル =IF(K6="","",INDEX(A$6:A$18,$K6)) N6セル =IF(K6="","",INDEX(D$6:D$18,K6)) 下へオートフィル 添付図参照 後は上記の応用かな

RX-78NT-1ALEX
質問者

お礼

おお!目標としていたデータができている! すばらしいです^^ 点数が多くなると総当り表が膨大なサイズになることと、採用されなかったデータを並び替えて下に表示することに関してはここまでできたら工夫のしようがあるように思います。 とりあえず、教えていただいた内容どおりにしてみて、次の手を考えたいと思います。 ありがとうございましたm(__)m

その他の回答 (1)

回答No.1

元のシート名をSheet1 新たにシートを挿入してSheet2とする ツール アドイン [レ]分析ツール 総当たりです。(コストパフォーマンスを求めてそれなりのものを出すのはできますが最適値ではないので) Sheet2シートにおいて N1セルに =TEXT(DEC2BIN(INT(ROW(N1)/256)),REPT(0,5))&TEXT(DEC2BIN(MOD(ROW(N1),256)),REPT(0,8)) A1セルに =MID($N1,COLUMN(A1),1)*1 右へ M1セルまでオートフィル O1セルに =SUM(A1:M1) A1:O1セルを選択して8191セルまで下へオートフィル (2の13乗-1) A:O列は不変なのでコピー → そのまま値の貼り付け (分析ツールのチェックを外してもOK) P1セル =IF($O1<=8,A1*INDEX(Sheet1!$D$6:$D$18,COLUMN(A1)),0) AB1セルまで右へオートフィル &下へオートフィル(フィルハンドルダブルクリック) AC1セル =SUM(P1:AB1) 下へオートフィル(フィルハンドルダブルクリック) AE1セル コストA (またはコストB) AF1セル =MATCH(AE1,{"コストA","コストB"}) AD1セル =IF(AC1<=INDEX(Sheet1!$B$3:$C$3,$AF$1),MMULT((P1:AB1>0)*1,INDEX(Sheet1!$B$6:$C$18,,$AF$1)),0) 下へオートフィル(フィルハンドルダブルクリック) AE3セル =LARGE($AD$1:$AD$8191,1) AE4セル =LARGE($AD$1:$AD$8191,2) AE5セル =LARGE($AD$1:$AD$8191,3) AF3セル =MATCH(AE3,$AD$1:$AD$8191,0) 下へオートフィル AF3セルの値の行に最適な組み合わせがある。 とりあえずここまで

RX-78NT-1ALEX
質問者

お礼

なるほど! 総当り表を作って、そこから呼び出して表示ですか! まったく思いつきませんでしたw 総点数が25点くらいあるのですが処理は大丈夫でしょうか? 6700万列くらい必要な計算になる気がします・・・ でも、総当りで必要なデータが引き出せることがわかっただけでもとてもいいイマジネーションを受けました。 ありがとうございます。

関連するQ&A

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

    エクセルでの計算式を教えて下さい。 概要はある列のセルの数値と別のセルの数値の組合せによって、特定のセルの数値をコピーして別のセルにそれを表示させる。 具体的には、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関数があります。 条件が多いので多くのセルに分かれています。 例えば 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列を超える計算式が何種類もあるため、その作業ですら大変なんです。 良い方法があったらご教授ください。

  • EXCEL2003 重複データに色を付けるVBA

    A列のA2からA21に氏名、B列のB2からB21に住所が入力済です。A列で重複しているデータに色をつけて、さらに並び替えをしたいと思います。色は黄色、並び替えの設定は黄色で色を付けたセルがA2から順に表示するVBAを教えていただけませんでしょうか。またお手数でも列をB列、C列に変更した場合についても教えていただけませんでしょうか。VBAコードの貼り付けはできます。よろしくお願いします。

  • エクセルVBA 変数Aと変数Bの組み合わせに対応する値を返すコード

    ワークシート上に次の表があり,この表をもとにして,変数A(0~4)と変数B(0~4)の組み合わせに対応するC列の値を返すコードは,どう書いたらよいでしょうか。  例えば,変数Aのセルに●(4),変数Bのセルに▲(0)と入力したら,値のセルに■(5)と表示させたいのです。  どなたか教えていただけませんか。 A列  B列  C列  4   0   5  3   1   4  3   0   5  2   2   3  2   1   4  2   0   4  1   3   2  1   2   2  1   1   3  1   0   3  0   4   1  0   3   1  0   2   2  0   1   3  0   0   3 変数A:● 変数B:▲ 値:■

  • 簡単そうで難しい計算

    簡単そうで難しい計算 A1に3 A2に4 A3に5 A4に7、B1に6 B2に7 B3に12 B4に13 B5に16、C1に1 C2に6 C3に7 C4に8 C5に9、D1に12 D2に13 D3に14 D4に20、E1に13 E2に15 E3に16の数値が入力されています。それぞれ列の少ない数値からA+B+C+D+Eの加算合計値を表示できないでしょうか?自分で調べてみたのですが順列で組み合わせの数値を出す計算式はあったのですが、その組み合わせの加算値を出す方法はわかりませんでした。 合計値と共に3+6+1+12+13 3+6+1+12+15 のように何を組み合わせたかも知りたいです。 グループ内の数値の組み合わせ点数を知りたいので、この様なものが必要になってしまい安易に考えていたのですが、私では手に負えません。 どうぞよろしくお願い申し上げます。

  • 組合せVBA

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

  • エクセル関数で重複チェック(条件付)

    表A1:B100で、 A列には1~100の数値が必ず入ります。(空白なし) B列には数値が入っているところと何も入力されていないところがあります。 B列に0以上の数値があり、A列が1でないものだけを対象として、A列の数値が重複していないかどうかをチェックするワークシート関数の組み合わせ方法をご教示ください。(VBAではありません) B列に0以上の数値があり、A列が1でないものだけのA列の数値を抜き出す作業列と、抜き出された数値をCOUNTIFで重複を調べる作業列の計2つの作業列を加えればわたしにもできたのですが、もっといい方法があるのではないかと思い質問いたしました。 よろしくお願いします。

  • excel関数教えてください。

    表にしてあって、A列には任意の数字がはいるようなってます。関数はB、C、D列に使いたいのですが B列:Aを3で割り小数点以下に.666が出たときには整数に2を足して、.333の場合は整数に1を足して表示したい。 C列:Aを3で割り小数点以下に.666か.333の場合小数点以下を切り捨てたい D列:Aを3で割り小数点以下に.666か.333の場合小数点以下を切り上げたい 例としては   A   B   C   D 1 10,000 33,334 33,333  33,333 2 20,000 66,668 66,666  66,666 上のような表です。Aに入る数値はいろんな 数値があります。関数に該当しないものは 3で割った数字をそのまま表示したいです。 宜しくお願いします。

  • excel2003 で処理の早い記述があれば

    XCEL2003 VBAで質問です。よろしくお願いします。 まず、リンク先の写真を参照お願いします。 https://www.dropbox.com/s/01saveqkt1u93zj/%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3.JPG?dl=0 A列-連続番号の数字 B列-名称があり、あらかじめ昇順に並んでいます。 同じ名前が複数行続く場合と、そうでない場合があります。 C列~H列-同じ名称(ひとつの名称)の中でそれぞれ計1個か、0個データが入っています。 これを別のシートで、写真の下表の様に、一つの名称を一行にまとめたいです。 この時 数値の入っているデータは、一行に集合して表示されます。 私のVBAの記述だと、オートフィルタで一件ずつ名称を抽出して、コピーの空白セルを無視して貼り付けるというやり方で、一行にまとめていますが、データが一万件ぐらいあり、いまいち処理が遅くて困っています。 どういう記述だと処理が早いか教えてもらえないでしょうか?

  • Excel並べ替えマクロ

    よろしくお願いします。 Excel並べ替えマクロについて質問なのですが、画像を見ていただきたいのですが、 前提条件としてL列~S列までは画像とるために非表示にしてあります。 又非表示にしてありますがQ列は区切り線でQより右側と左側は支店Aと支店Bのデータになります。※左側データの支店Aのデータを基準にします。 (1)D列を名称ごとに並べ替えします。 (2)E列を名称ごとに並べ替えします。 (3)E列の名称ごとにJ列の高い順に並べ替えします。 (4)左側の支店Bも基準となる支店Aと比較できるように横並びに見れるようにします。 (5)横並びにできたらE列の名称ごとに太線で分けます。 どうぞよろしくお願いいたします。

専門家に質問してみよう