• ベストアンサー

Excelマクロで全シートで数値の並び替え

Excelは2007を使っています Sheet1~Sheet3のG列5~100行に入っている数値を降順で並び替えたいのですが、 これをマクロで実現する方法がありましたらご教示をお願い致します。 F列には業者名、G列には取引数を入力しており、 これが業者名とズレる事無くソート出来るようにしたいと考えております。 出来た!と思ったのですが、業者名がズレてしまい非常に困っております。 よろしくお願いします!

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

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

ふつーにセル範囲をG列基準で並べ替えます。 ただし >Sheet1~Sheet3のG列5~100行に入っている数値を降順で並び替えたい ご説明のとおり5行目からタイトル行じゃなく数字が記入してあるとして。 sub macro1()  dim i as integer  for i = 1 to 3   worksheets("Sheet" & i).range("F5:G100").sort _    key1:=worksheets("Sheet" & i).range("G5"), order1:=xldescending, header:=xlno  next i end sub

sclub7
質問者

お礼

keithinさん なんとか出来ました。 締め切り直前だったので大変助かりました。 本当にありがとうございます!

関連するQ&A

  • マクロで別シートに数値を移したいのですが・・・

    タイトルにありますとおり、マクロを駆使し、数値を別シートに移したいのですが なにぶんマクロに関してほとんど経験、知識はありません。 毎回手動でコピーを繰り返しているのですが、なんとかマクロで自動コピーできればありがたいです^^; 方法としては、フォームのボタンにマクロを埋め込むような形にしたいと思っております。 以下のようなシートがあったとします。 シート1 (抽出内容”平均”)    A   B   C   D   E   F   G 1  回数 25 2  2   3   4   6   3   2   9   3 1行目に、回数とあります。今回は25回目のデータとします。 2行目に、同一シートの別表から抽出された数値が並びます。 この数値は別表でオートフィルで抽出された数字ですので、毎回変更されるものとします。 今回は仮に”平均”という内容で抽出したデータだとします。 シート1 (抽出内容”合計”)    A   B   C   D   E   F   G 1  回数 25 2  10 10  20  11  15  16  8   3 同じく、25回目、抽出内容”合計”として、オートフィルで抽出した数値です。 シート2     A   B   C   D   E   F   G   H 100 回数 平均(1) 2  3  4  6  3  2  9  101 25  平均(2) 102     平均(3)  103     合計(1)10 10 20 11 15 16 8 104     合計(2) 105     合計(3) 106 107 108 回数 平均(1) 109 26  平均(2) シート2は、シート1で抽出された数値をコピーした表です。 A列は今回の回数、25となっております。この数値はこれより上に24回分の表があり、今回が25回目という意味です。 107行目以降も26、27、28と回数は続いていますが、現状では25が最新とし、108行以降は数値はなく、空白とします。 それぞれ平均、合計共に、シート1で3回抽出し、それぞれ別の数値が入るものとします。 これまでは、シート1で抽出後、手動でコピーし、シート2の該当セルに貼り付ける、という作業でした。 シート1  →   シート2  のコピーにマクロを使用したいのですが 回数が25の場合、シート2でA列を検索し、さらに抽出内容が”平均”1回目だった場合 平均(1)にコピーし、2回目だった場合平均(2)にコピーする、といった具合です。 イメージとしては、シート1に、(1)、(2)、(3) と、それぞれ入ったリストボックスなどがあり [平均][合計] のそれぞれボタンがあり、(1)を選び、平均を押すと100行目の平均(1)に入り 合計を押すと、103行目の合計(1)に数値が入る。と、いうような感じです。 この説明で私の意図するところが伝わるか不安ではありますが、このような場合に使えるマクロの式がございましたら ご教示いただけませんでしょうか^^; 実際の表とは若干ちがいますが、大まかなイメージとしては上に書いてある通りです。

  • エクセルのマクロでこういう場合は?

    エクセル97です。 Sheet1の E3:J29 に表があります。 E列、F列は文字列、G列は数値、H~J列には式が入っています。 この表の G列の値が空白や0でない行だけをコピーして、Sheet2 のB2 以下に切れ目なく表の「値」を貼り付けるにはどうのようなマクロを書けばいいのでしょうか?(G列が空白や0の行はSheet2の表では一切無視され、空白行ができないようにしたいのです。) よろしくお願いします。

  • シート名が半角数値だったら、それら全シートに設定を。

    エクセル2000です。 マクロを作成したいのですが、どなたかお知恵をお貸しください。 やりたいこと。 シート名が半角数値だったら、それら全てのシートに下記の設定を施しなさい。 ↓ココから 選択した全シートの1行目は左揃え。 選択した全シートの2行目,3行目は中央揃え。 選択した全シートの4行目以下の全行について、横位置を・・・ A列→中央揃え B列→左揃え C列→中央揃え D列→右揃え E列→左揃え&折り返して全体を表示する。 F列→中央揃え G列→中央揃え 選択したシート全ての縦位置を・・・ 全てを中央揃え ↑ココまで ↓ココから ↑ココまで  は、自動マクロですでに作成してあるので、OKです。 知りたいこと。 シート名→1,2,3,・・・、いくつまでシートがあるかは不明確であり(今後増える)、 かつ、数値が飛び飛びになる可能性がある場合の設定の仕方を知りたいです。 シート名が1,2,4,5,10・・・などとなる場合があります。 このような場合、どのように設定したら良いのでしょうか。 よろしくお願いいたします。

  • エクセル列の並び替えについて

    エクセルシートのA列の数値を降順で並び替えた場合、B列~も自動的に降順で並び替えられるような方法がありましたらご教授ください。

  • エクセルのマクロで行いたいのですが。シート1からシート3(ジャンル別の

    エクセルのマクロで行いたいのですが。シート1からシート3(ジャンル別の商品データ)にあるデータを入荷した商品名で検索し、その検索結果の行を入荷した数量分コピーして、シート4(印刷)に上から順に貼り付けます。その結果をバーコードラベルで印刷し、商品に貼り付けていきたのですがどなたか教えてください。現在は、いちいちシート毎で「Ctrl+F」で検索画面を出し、商品名を検索し、なければ別のシートで検索し、該当するものが見つかれば選択して、行をコピーして印刷シートに貼り付けています。とても時間がかかっています。 シート1から3の構成は、ジャンル別で分かれていますが、 A列:商品名、B列:メーカーコード、C列:自社コード、D列:売価、E列:原価、F列:登録日 です。バーコード印刷のマクロは出来てます。 複数のシートから検索し、コピーして、印刷シートに貼り付けるマクロです。 エクセルは2003で、OSはXPのSP3です。

  • エクセルマクロで並び替えを行いたい。

    エクセルマクロで以下の並び替えを行いたいのですが、可能でしょうか。 「I列~O列」データ「A列~G列」の下に並ぶようにし、 かつ、複数シートも同様に処理したいと思います。 【元データ】 「A列~G列」 「I列~O列」 ※行数はシートによる異なる。 ※シート数もファイルごとに異なる。 【並び替え後】 「A列~G列」 「I列~O列」 よろしくお願いします。

  • エクセルマクロで並び替えが2つのグループになってしまった

    マクロでシート1からシート2に別レイアウトを作ってソートしました。 前ゼロ有りの3桁数字なのでセルは文字列です。 ところが500件中30件ほどが文字列扱いされず前半の集団、残りが文字列(左上隅に緑の三角マーク)として後半の集団と泣き別れてしまいました。 もともと文字列のセルから移しているので両者の違いはさっぱりわかりません。 Range("C" & CNT).NumberFormatlocal = @ ’書式変更 Range("C" & CNT) = WorkSheets(1).Range("A" & CNT) ’転送 CNTは処理上のカウンターです。 全行編集後に Range("A1:H" & CNT).Sort Key1:=Range("C1"), Header:=xlGuess おかしな30件は左詰表示ですがF2を押すとなぜか右詰になり エンターキーで初めて左上隅に緑の三角マークが出ます。 手入力で試すと 「標準書式に数値入力」数値が右詰表示 「文字列に書式設定変更」→ 左詰表示に変わるが文字列ではない。 (この状態と同じだと思います。) クリックやF2でアクションを加えてやるとやっと文字列になるというのも同じです。 マクロでは文字列書式にしてから転送しているのにどうして上記と同じ現象になるのでしょうか。 直し方もしくは何らかアクションを加えてやるにはどうしたらよいでしょうか。 よろしくお願いします。 

  • エクセル マクロ 条件に応じてロック

    エクセル2002を使用しています。 1行目のG1に”ロック”という文字列が入っていたら 2行目のG列の1つ前のF列で”A2:F2”まで、セルをロックしたいのですが、 どのようにマクロを書けばいいでしょうか? (”ロック”の文字列は、1行目には1つしか入りません。) できれば、エクセル2000でもマクロが対応できると嬉しいです。

  • エクセル・並び替えのマクロ

    エクセルで並び替えのマクロを作ったのですが ___A ______B ______C ______D ______E ______F _____________G 1 (株)カネカ【東証1部 : 4118.T】 2 日付 __始値 _高値 _安値 _終値 _出来高 ___調整後 3 07/07 1,030 1,069 ___941 __974 30,772,000 ___974 4 07/06 1,057 1,093 1,016 1,033 26,904,000 1,033 5 07/05 1,080 1,086 1,023 1,051 26,541,000 1,051 6 07/04 1,113 1,209 1,087 1,098 36,317,000 1,098 7 07/03 1,096 1,128 1,020 1,124 23,988,000 1,124 8 07/02 1,098 1,147 1,020 1,105 28,609,000 1,105 9 07/01 1,100 1,158 1,078 1,082 17,808,000 1,082 このような表で マクロ記録開始 セルA3をクリック データ→並び替え 優先されるキー:日付・昇順 データ範囲の先頭行:タイトル行 マクロ記録終了 で、できたマクロが Sub Macro1() Range("A3").Select Range("A1:G9").Sort Key1:=Range("A3"), Order1:=xlAscending,Header:= _ xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ SortMethod:=xlPinYin, DataOption1:=xlSortNormal End Sub これを実行すると 1行目、2行目の(株)カネカ、日付、始値…、が8行目、9行目になってしまいます そこで、マクロの Range("A1:G9")を Range("A3:G9")に書き換えて Sub Macro2() Range("A3").Select Range("A3:G9").Sort Key1:=Range("A3"), Order1:=xlAscending, Header:= _ xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ SortMethod:=xlPinYin, DataOption1:=xlSortNormal End Sub これを実行すると 日付が、07/07、07/01、07/02、07/03、07/04、07/05、07/06 の順番になってしまいます どうしたらよいのでしょう?

  • excel2000マクロ抽出方法

    2つのファイルがあります。ブック名A.XLS シート名 WORK              ブック名b.XLS シート名 SORT              ブック名A.XLS シート名 WORKに下記のデータが入っています。 AD 1300G A227550 000PA505(C列2行目) 200112(F列)200201(G列)200202(H列)200203(I列)200204(J列)200205(K列)→1行目固定データ AD 1300G A227550 000PA533(C列3行目)   ブック名b.XLS シート名 SORTに下記のデータが入っています。 AD 1300G A227550 000PA505(A列2行目)200112(E列)200201(F列)200202(G列)200203(H列)200204(I列)200205(J列) →1行目E列~J列のデータは都度変わっている AD 1300G A227550 000PA533(A列3行目)    データ抽出条件  ブック名A.XLS シート名 WORKの F列~K列の1行目の列データとブック名b.XLS シート名 SORTの  E列~J列の1行目の列データが同じで、ブック名A.XLS シート名 WORKのC列の2行目以降のコードと  ブック名b.XLS シート名 SORTのA列の2行目以降のコードが同じだったら  ブック名b.XLS シート名 WORKの E列~J列の同じ行にデータを入れる。違うときは、  ブック名b.XLS シート名 WORKのデータはそのままにする。 上記の条件を満たしたマクロの記述の仕方を教えてください。 以上よろしくお願いします。