• 締切済み

再度 マクロの「繰り返しコード」の質問です。

宜しくお願いします。まったくの初心者です。 今、A1~A5には数値。 隣のB1~B5には=RUND()の関数。 ("A1:B5")をセレクトして並び替え、 (ソート最優先キーはB列、降順) この乱数を並び替えして、E1にコピー、そしてG列に1列挿入する。 これを10回繰り返したい。 というコードが、なかなか作れません。 何方か教えてください。

みんなの回答

  • chachaboxx
  • ベストアンサー率23% (412/1777)
回答No.2

以下、質問に記載されたマクロの内容です。 ("A1:B5")をセレクトするところから挿入後までの10回ループです。 数値がループごとに変更される以外は、1回でも1万回でも数値が入るセル範囲は同じです。 ※A1~B5とE1~F5に数値が入りますが、G列挿入の意味が不明。 Sub Macro1() ' Macro1 Macro For i = 1 To 10 '10回繰り返し Range("A1:B5").Select '("A1:B5")をセレクト ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("B1:B5"), _ SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Sheet1").Sort .SetRange Range("A1:B5") .Header = xlGuess .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With '並び替え:B列、降順 Selection.Copy 'コピー Range("E1").Select ActiveSheet.Paste 'E1に貼付け Columns("G:G").Select Application.CutCopyMode = False Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 'G列に1列挿入 Next i End Sub 以上

  • chachaboxx
  • ベストアンサー率23% (412/1777)
回答No.1

先ずは手作業(マウス操作)でやりたいことをやってみて、結果を確認してみては如何でしょうか? 操作(マクロ処理)内容とループ文は別の要素です。手作業を繰り返して得られる内容とマクロで得られる内容は同じです。

enkadegozaruwai
質問者

補足

200列ほどいりますので、200回ポチはなかなか 今はボタンを2個作っていまして 1つのほうで、ソートをもう一つで移動させてと コードは超ながいですよ

関連するQ&A

  • マクロ繰り返し

    宜しくお願いします。 A1~A10に数値、B1~B10に乱数を発生させて(RAND関数)、C1~C10にその順位を出す、その順位をG1~G10にコピー、F列に1行挿入、  これを10回繰り返す。 マクロのボタンを1回押せば、これが実行される。これを5回したいときはボタンを5回押せばいい?これを実行できるコードがあるのでしょうか、わかりません。お教えください。

  • エクセルのマクロの繰り返し

    よろしくお願いします。 「A1からA5までの数値を数字の大きい順に並び替えして、 そのA1からA5のデーターをC1からC5にコピーする。 次にB列に1列挿入する。」 ここまではエクセルのマクロ機能で出来ましたが それを100回くり返すコードというか、 コードの書き方、仕方がわかりません。 このばあいどのようなコードでしょうか

  • マクロの繰り返しコード

    たとえば繰り返す回数を仮にA1セルの数値を参照 してその分だけ繰り返す コードの書き方を教えてください 例として B1からB10の数値をコピーしてD1に張り付けC1に1列追加。 この作業を(A1)の回数分だけ繰り返す。 初心者です、ご回答のコードをそのまま貼り付けて利用したいので よろしくおねがいします

  • Javaのソートに関する質問です。

    Javaのソートに関する質問です。 CSVから取得したデータの一つをキーとして降順にソートしたいのでしょうが、どのような方法が効果的でしょうか?関数が利用できるのであれば関数を使用したいのですが。。。 データの詳細を以下に記載します。 環境 JavaSE5.0 CSVデータ ※ソート条件 ・キー内容は「wwwwwwww-xxxxxxxx-yyyyyyyy-zzzzzzzz」という形式で、 「wwwwwwww」が1番、「xxxxxxxx」が2番、というように、左側の数値が優先されます。 (ソート前)キー内容 タイトル 11111111-22222222-33333333-4444444 テスト1 22222222-33333333-44444444-5555555 テスト2 11111111-00000000-22222222-3333333 テスト3 22222222-44444444-55555555-6666666 テスト4 (ソート後)キー内容 タイトル 11111111-00000000-22222222-3333333 テスト3 11111111-22222222-33333333-4444444 テスト1 22222222-33333333-44444444-5555555 テスト2 22222222-44444444-55555555-6666666 テスト4

  • Excel半角より前の文字のみ抽出…マクロ?

    Microsoft Excel2007で住所録を編集中です。 現在、B列に半角カタカナで氏名(苗字 名前 という形で苗字と名前の間に半角スペースが入っています)が何千行と記入されている状態です。 これを、空白(全く未記入)のA列に、苗字のみをコピー(切り取りではなくコピー)して貼りつけたいのですが、どうすれば良いでしょうか? A列:空欄 B列:ヤマダ タロウ ↓ A列:ヤマダ B列:ヤマダ タロウ としたいのです。 なぜこうしたいかと申しますと、住所が半角・全角バラバラに記入されて一人ずつ入っており、家族ごとにソートしたいためです。 優先順位をつけて昇順に並べ替えようと思っており、優先キー1:苗字、優先キー2:郵便番号、優先キー3:住所、にして、同じ住所を見つけやすくしたいのです。 同じ住所を見つけて、全て半角などにそろえようと思っております。 B列の苗字名前の間には必ず半角が入っています。 半角より前の文字のみ、抽出(というかコピー)のやり方を教えて下さい。 エクセルは、言われた通りに書式を打ち込んだり、簡単な計算をしたり、簡単なグラフをつくったりできるレベルで、マクロは記述していただいたものをコピー&ペーストで使うことができるくらいの、初心者レベルですが、そうか宜しくお願いします!

  • エクセルマクロについて教えてください

    エクセルで A~F列に 「 組 No. 枠  記号 コードA コードB」と並べています。 2行目以降に、「記号」を除き数値が入ります。 ※ お手数をおかけしますが画像を確認願います。ご覧頂いたほうがわかりやすいと思いますので。 これを、 (1) 組・No.・枠 固定 (記号・コードA・コードBが並び変わっても不動) (2) コードA 降順 (3) コードB 昇順 (4) 2~9行目の コードAを昇順で枠Aに指定された順に 上記のように並べ替えをしたい場合、どのようなマクロを作成したらよろしいでしょうか?  

  • Array.sortメソッドのデフォルト比較関数

    JavaScriptのArray.sortメソッドは、 引数を指定しなければデフォルトの比較関数でソートされますが、 この比較関数を取り出して利用できないでしょうか。 要件は、プロパティ[name]と[value]を持ったオブジェクトの配列のソートです。 nameプロパティは半角英数字の文字列で、これをキーにソートしたいと考えています。 ソートの基準は、Array.sortのデフォルトと同じです。 つまり、こんなコードを想定しています。 var ary = [o1, o2, o3]; // o1~o3はそれぞれ上記のオブジェクト ary.sort(function(a, b){ return compare(a.name, b.name); }); このコードにおけるcompare関数を、Array.sortのデフォルト比較関数にしたいのですが、 これは自前で作成するしかないのでしょうか。 数値だけでなく文字列全般の比較になるので、結構実装が面倒そうなのですが、 自作する場合に何か使えそうな標準関数等、無いでしょうか。 今のところ思いついているのは、下記みたいなものです。 var compare = function(a, b) {  var temp = [a, b];  temp = temp.sort();  return temp[0] === a ? -1 : 1; } 比較関数内で更にArray.sortを呼んで2項目をソートし、 順番が入れ替わったかどうかを判定するだけです。 何だか冗長で気持ち悪いコードですので、代案を探しています。

  • マクロ記録で作成した並べ替えのコードを修正したい

    Windows7 Excel2007 使用しているマクロ初心者です。 マクロ記録で、次の2個のスクリプトをつくりました。 二つとも正常に実行できています。 しかし、このコードは .SetRange Range("A3:N26")の部分をいちいち手動で変更しなくてはなりません。 この部分を自動で設定し、しかもどちらの一覧表でも使えるコードにしたいです。 どう修正したらよろしいでしょうか? .Header = xlNo以下のコード省略できますか? Sub 一覧表1のソート() Range("B2").Select Worksheets("一覧表1").Sort.SortFields.Clear Worksheets("一覧表1").Sort.SortFields.Add Key:=Range("B2"), SortOn _ :=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With Worksheets("一覧表1").Sort .SetRange Range("A3:N26") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End Sub ---------------------------------------------------- Sub 一覧表2のソート() Range("B2").Select Worksheets("一覧表2").Sort.SortFields.Clear Worksheets("一覧表2").Sort.SortFields.Add Key:=Range("B2"), SortOn _ :=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With Worksheets("一覧表2").Sort .SetRange Range("A3:P28") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End Sub

  • Excel 2007で画像を並べ替えたい。

    Excel 2007で画像を並べ替えたい。 A列に数値を入れ、B列に画像を挿入します。 その後、A列の数値の昇順・降順で並べ替えても、B列の画像は並べ替えられません。 http://okwave.jp/qa/q6122892.html に画像をセル内に納めればよいと書かれていましたが、それでもうまくいきません。 どうぞよろしくお願いします。

  • マクロで出来ますか?

    こんにちは。どなたか分かる方がいましたら教えてください。 sheet1のA1の数値が1ならsheet1のB1の値をsheet2のA1へコピー sheet1のA1の数値が2ならsheet1のB1の値をsheet2のA1とB1の2ヶ所へコピー sheet1のA1の数値が3ならsheet1のB1の値をsheet2のA1とB1とC1の3ヶ所へコピー という風に出来ますか?出来るのならどういうコードを書いたらいいでしょうか?