Excel2007VBAで列ごとにランダム並べ替え
- Excel2007VBAを使用して、列ごとにデータをランダムに並べ替える方法について教えてください。
- ランダムな並び替えができるExcel2007VBAのコードを探していますが見つかりません。どのように実現すれば良いでしょうか?
- Excel2007VBAで特定の列のデータをランダムに並べ替える方法を教えてください。
- ベストアンサー
Excel2007VBAで列ごとにランダム並べ替え
Excel(エクセル)2007VBAを使った、 コマンドボタンを押すたびに「ある一列のデータをランダムに並べ替える」VBAソースが知りたいです。 (Google検索をかなりしたのですが、この条件を満たすVBAソースが見つかりませんでした。) ----------------------------------- たとえば、 【A列】に A1:えんぴつ A2:消しゴム A3:定規 A4:コンパス A5:赤ペン A6:下敷き A7:ノート A8:クリアファイル A9:クリップ A10:色鉛筆 と入力したとします。 そして、コマンドボタンを一回押します。 ↓↓↓ 【A列】が A1:下敷き A2:ノート A3:クリップ A4:コンパス A5:定規 A6:色鉛筆 A7:えんぴつ A8:赤ペン A9:消しゴム A10:クリアファイル ↑のように、 【A列】にある「えんぴつ」「消しゴム」「定規」「コンパス」「赤ペン」「下敷き」「ノート」「クリアファイル」「クリップ」「色鉛筆」の文字が、【ランダムで並べ替え】されるようにしたいです。 【補足】 ※1回限定のランダム並べ替えではなく、コマンドボタンを押すたびに【何度でも】ランダム並べ替えできるようにしたいです(回数無制限のランダム並べ替えがしたいです)。 ※上記の【A列】に並べた文字はあくまで例です。実際は、【A列】に自由に文字を入力できる応用の利く仕様にしたいです(Excelの【A列】に、どんな言葉や数字を直接入力してもランダム並べ替えできる、という意味です)。 ※上記の【A列】が10行というのもあくまで例です。実際は、【A列】が何行にでも対応できる仕様にしたいです(具体的には【A列】が、時間がかかってでも5000行くらいまで対応できるのが理想です)。 実際はVBAを使わなくてもランダム並べ替えはできるのですが、その方法は効率が悪いと分かったので効率のため、コマンドボタンひと押しでランダムに並べ替えられる【VBAソース】が知りたいです。 上記の条件を満たすVBAソースがわかる方がいましたら、どうかご教授ください。 よろしくおねがいします。
- azazazaz1023
- お礼率68% (13/19)
- その他MS Office製品
- 回答数2
- ありがとう数2
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> 実際はVBAを使わなくてもランダム並べ替えはできるのですが、 そうなのであれば、その一連の作業をすべて「マクロの記録」で記録し、それで記録されたマクロをコマンドボタンに登録すればいいだけですよ。
その他の回答 (1)
- keithin
- ベストアンサー率66% (5278/7940)
コマンドボタンには2種類ありますが,下記はActiveXコントロールを使用した場合の記載です。 private sub CommandButton1_Click() dim r r = cells(cells.rows.count, 1).end(xlup).row application.screenupdating = false range("A:A").insert range("A1:A" & r).formula = "=RAND()" range("A:B").sort key1:=range("A1"), header:=xlno range("A:A").delete application.screenupdating = true end sub
お礼
keithinさん ご回答ありがとうございます。 早速やってみました。 すごい!の一言。 私が求めていたもっとも理想的な動作をしてくれました。 本当に助かります。 keithinさんの回答もベストアンサーにしたかったです。
関連するQ&A
- EXCEL2007で並べ替えができません
OSはXPで、EXCEL2007を使用しています。 ランダムに入力した名簿(A列:連番、B列:地区・班番号、C列:氏名、D列:住所、E列:電話、F列誕生月、G列:備考、H列:会員番号)を氏名の昇順で並べ替えをしようとしてもできません。 ちなみにデータタブでカーソルをC列に置き、昇順ボタンを押しても、飯田が1番に来、新井が25番目に来てしまう始末です。 また、並べ替えボタンで、並べ替えウイザードの最優先されるキーに氏名を選択し、並べ替えキーを値、順序を昇順にしてOKボタンを押しても結果は同じでした。 解決方法をご教示ください。
- 締切済み
- オフィス系ソフト
- 受験当日の持ち物チェック
こんばんは、高校受験の親です。 HBの鉛筆を10本、鉛筆削り、消しゴム、分度器、三角定規、定規、コンパス、下敷き、腕時計。 受験票 こんなものでしょうか? あと何か必要なものがあれば教えてください。
- ベストアンサー
- その他(受験・進学)
- Excel2002並べ替えについて
いつもお世話になります。並べ替えでA列に数字がランダムに並んでいます。 A列を昇順で並べ替えようとすると「この操作には同じサイズの結合セルが必要です。」のメッセージが出ます。タイトル行がセルの結合がしてあるのがいけないのでしょうか。教えてください。よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- 【Excel VBA】複数範囲の並べ替えは可能でしょうか?
【Excel VBA】複数範囲の並べ替えは可能でしょうか? Excel2003を使用しています。 CSVデータを元に作成された下記のような表があります。 A列…日付、B列…受注番号、C列…摘要(会社名・品名等)、D列…金額となっています。 6行目以下に上記の内容でデータが入力されていますが、会社ごとのデータ内で日付順に並べ替えをしたいのですが、VBAで複数の範囲を選択して、それぞれの範囲内での並べ替えは可能でしょうか? A B C D 6 ○○会社 7 1/20 123 AAA 1,000 8 1/15 120 BBB 2,000 9 10 計 3,000 11 12 ××会社 13 計の1行上と下は空欄行で、以下、会社名の後にデータが続くというパターンの繰り返しで数十社分あります。 Excelのデータ⇒並べ替えでは複数選択した状態での並べ替えはできないので、VBAで可能であればと思い、質問させていただきました。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- Excel2007VBAのランダム置換ソース
Excel(エクセル)2007VBAを使って、 「複数ある、同一の置換したい文字・数」 を 「複数の文字・数」 でランダムに置換したいのですが、 VBAソースが分かりません。 たとえば、 【A列】に A1:私は(置換する所)と(置換する所)が得意です。 A2:彼は(置換する所)と(置換する所)と(置換する所)が特技です。 A3:彼女は(置換する所)と(置換する所)と(置換する所)と(置換する所)の選手です。 A4:彼らは(置換する所)と(置換する所)と(置換する所)と(置換する所)と(置換する所)が好きです。 A5:あの人は(置換する所)と(置換する所)と(置換する所)と(置換する所)と(置換する所)と(置換する所)をしたことがありません。 と入力されている時に、 【B列】に B1:拳闘 B2:柔道 B3:野球 B4:籠球 B5:打球 B6:羽球 B7:剣道 B8:卓球 B9:水泳 B10:避球 と入力したとします。 そして、コマンドボタンを押すと 【A列】にあるすべての 「(置換する所)」 を、 【B列】にある「拳闘」「柔道」「野球」「籠球」「打球」「羽球」「剣道」「卓球」「水泳」「避球」のどれかで必ず置換されるようにします(【ランダムで置換】されるようにしたいです)。 ※置換の条件として、一つのセル内で同じ文字が重複しないようにしたいです。 (私は拳闘と拳闘が得意です。) ↑ ↑ 同じ文字が2つ以上ある置換は失敗です。 --------------------------------- 置換の成功例 (重複なしの置換) ◆置換前の【A列】A5 あの人は(置換する所)と(置換する所)と(置換する所)と(置換する所)と(置換する所)と(置換する所)をしたことがありません。 ↓↓↓ ◆置換後の【A列】A5 あの人は打球と柔道と水泳と剣道と避球と拳闘をしたことがありません。 --------------------------------- これが未完成のVBAソースです。 ↓↓↓ Sub test_Click() For Each CellA In Range("A1:A5").Cells Rnd1 = Int(Rnd() * 10) + 1 Rnd2 = Int(Rnd() * 9) + 1 Rnd3 = Int(Rnd() * 8) + 1 Rnd4 = Int(Rnd() * 7) + 1 Rnd5 = Int(Rnd() * 6) + 1 Rnd6 = Int(Rnd() * 5) + 1 If Rnd2 = Rnd1 Then Rnd2 = Rnd2 + 1 If Rnd3 = Rnd2 Then Rnd3 = Rnd3 + 1 If Rnd4 = Rnd3 Then Rnd4 = Rnd4 + 1 If Rnd5 = Rnd4 Then Rnd5 = Rnd5 + 1 If Rnd6 = Rnd5 Then Rnd6 = Rnd6 + 1 CellA.Value = Replace(CellA, "(置換する所)", Cells(Rnd1, 2), , 1) CellA.Value = Replace(CellA, "(置換する所)", Cells(Rnd2, 2), , 1) CellA.Value = Replace(CellA, "(置換する所)", Cells(Rnd3, 2), , 1) CellA.Value = Replace(CellA, "(置換する所)", Cells(Rnd4, 2), , 1) CellA.Value = Replace(CellA, "(置換する所)", Cells(Rnd5, 2), , 1) CellA.Value = Replace(CellA, "(置換する所)", Cells(Rnd6, 2), , 1) Next End Sub 【補足】 ※コマンドボタンを押すとランダム置換される仕様です。 ※1回限定の置換ではなく、コマンドボタンを押すたびに(何度でも)ランダム置換できるようにしたいです。 ※上記の【A列】【B列】の文字はあくまで例です。実際は、【A列】【B列】ともに自由に文字を変更できる応用の利く仕様にしたいです(Excelの【A列】【B列】に、文字を直接入力して変更するという意味です)。 ※上記の【A列】が5行、【B列】が10行というのもあくまで例です。実際は、【A列】【B列】ともに何行にでも対応できる仕様にしたいです(具体的には【A列】【B列】ともに、10000行くらいまで対応できるのが理想です)。 長くなりましたが、ここまでの条件を満たすVBAソースが知りたいです。 どうかよろしくおねがいいたします。
- ベストアンサー
- その他MS Office製品
- Excel2010 VBA
Excel2010でVBAのフォームを使って「コマンドボタン」をクリックしたときにフォーム入力した内容をデータ(リスト)に転記(反映)させたいのですが どのようにしたらいいでしょうか? コマンドボタンの作り方は分りましたがそのマクロを実行する内容(コード)の作り方がいまいちわかません ちなみにデータ(リスト)は上から順番に空白の列を埋められていけばいいです よろしくお願いします
- ベストアンサー
- その他MS Office製品
- 文字列を抽出して足し算するには?
質問させていただきます。 下記のような表があったとします。 A B C D 1 えんぴつ 100円 ノート 100円 2 消しゴム 200円 定規 200円 3 定規 150円 消しゴム 400円 4 ノート 300円 えんぴつ 150円 AとCには品名、BとDには値段が入力してあります。 そこで、別シートのセルに えんぴつ合計 250円 消しゴム合計 600円 定規合計 350円 ノート合計 400円 のようにそれぞれの品物の合計金額を出せませんでしょうか? *品名は同じでも値段が違います。 品名ごとに列を決めて入力すれば簡単なのでしょうが・・・ よろしくお願い致します。
- ベストアンサー
- その他MS Office製品
- エクセルのVBAでソートをしたい
エクセルの A列に1,1,3,2,4・・・・・というデータがあって、 B列にB,A,C,D,E・・・・・というデータがった場合、 上から順番に1A,1B,2D,3C,4Eという順番に並べ替えしたいです。 エクセル単独でやる場合は、データの並べ替えでA列を第一優先、B列を第二優先で並べ替えをすればよいのですが、 VBAに埋め込んで、ボタンを押せば並べ替えできるようにできますでしょうか?
- ベストアンサー
- Visual Basic
- 文字列のランダム表示のVBA(エクセル)
A1をダブルクリックすると、A1に7つの文字列がランダムに表示される。 追加条件として、先頭の文字は"a""c""f""h""k""9"に限定される。 2文字目から最後の文字までは、"0""1""2""5""6""7""8""x"に限定される。 例として、 f010156 a666082 k702x15 9xx7587 上記のVBAを教えていただきたいのですが。 よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- エクセルの関数やマクロだけで、ランダムな並べ替えをするには?
エクセルの機能である[データ]-[並べ替え]操作を使わずに、 ランダムなデータの並べ替えをするには、どうしたらいいでしょうか? 例: E列の乱数結果より、D列の内容をB列に並べ替え表示 A B C D E F 1 順位 名称 C 場所 乱数 2 1 青森 5 3 2 埼玉 1 4 3 長野 3 5 4 福井 2 6 5 大分 4 7 ↓ A B C D E F 1 順位 名称 C 場所 乱数 2 1 埼玉 青森 5 3 2 福井 埼玉 1 4 3 長野 長野 3 5 4 大分 福井 2 6 5 青森 大分 4 7 B列への関数入力または簡単なマクロを教えていただけると助かります。 よろしくお願いします。
- 締切済み
- オフィス系ソフト
お礼
nattocurryさん ご回答いただきありがとうございます。 的確なアドバイスありがとうございます。 いろいろ検索しまして、今ようやく、「マクロの記録」とやらでバッチリランダム並べ替えできました。 こんな方法があること自体知らなかったです。 すごい便利ですね^^ すごい気付き、ありがとうございます。 すばらしいベストアンサーです。