を記入 function newMark(y,m,d) { oldDay = new Date(y+"/"+m+"/"+d); newDay = new Date(); n = (newDay - oldDay)/(1000*60*60*24); if(n <= 14)document.write(""); } //-->
モジュールのソースをボタンでコピーできるようにしました。ホームページに載っているソースをコピーしようとしてドラッグしかけて、うまく全体がコピーできなかったことを今まで何度も経験していると、簡単にコピーできるほうがありがたい。そんな思いで一括コピーするボタンをつけてみました。もちろん私はエクセルVBAといっても本で読んだり、他の人のHPを参考にしながら、自分が利用しそうなものをまとめているだけで、自分なりに手を加えている箇所は非常に少ないだろうと思います。
エクセルVBAのマクロの記述モジュールは緑の枠内に記述しています。「モジュールをコピーする」のボタンをクリックすると、このモジュール全体を一発でコピーします。それを貼り付けてマクロを実行してみてください。
1 行をランダムにシャッフルする(2015,11,21)
2 第1行の列をランダムにシャッフル(2015,11,21)
3 表の列をランダムにシャッフル (2015,11,21)
4 表の列を2つの条件で並び替える (2016,6,5)
5 表の行を2つの条件で並び替える (2016,6,5)
6 表の列を昇順とランダムの2条件で並び替え (2016,6,5)
7 表の行列を入替えてルビも含めて縦書きを横書きに貼り付け (2016,6,5)
行を昇順・降順に並び替えるのはメニューからすぐできるが、ランダムにシャッフルしようとすると、隣の列にでも「=RAND()」を入力して必要な行数分コピーしてから、この列を昇順なり、降順に並び変えるとランダム(順不同)にシャッフルできる。それをマクロでやってみようというのがここのテーマです。
関数式を入れて乱数を取得し、並び替えて、その乱数を削除するという形でマクロを組んでいるサイト「やむえむのExcel VBAメモ」があったので参照させていただきました。これは、A1〜A10にデータがあり、B列に乱数を入力し、順番(昇順)に並ばせ、最後にそのB列の乱数を削除するというものです。
「1 行をランダムにシャッフルする」はA列の行を入れ替えてシャッフルするものでした。つぎに、A1〜J1に並んでいるデータをランダムにシャッフルしてみましょう。
「2 列をランダムにシャッフルする」ではA1〜J1に並んでいる10個のデータをランダムにシャッフルしました。次に、データの数が縦横ともに変わっても表内の列をシャッフルさせるにはどうしたらよいかやってみましょう。
表の周りには1マス以上の空白セルを設定してください。
列を並び替えるのに、2つの行を参照して並び変えることを考えてみます。
A3を含む表としてマクロを作成しているので、A2の行は空白にします。表の周りには1マス以上の空白セルを設定してください。上の表の中で、A5の行を第1条件として「1,2・・・」と昇順に並び替え、A4の行を「おえういあ」のように降順に並び替えるとします。
下記のマクロを実行すると
となります。
行列を並び替えるのに、2つの列を参照して並び変えることを考えてみます。
A3を含む表としてマクロを作成しているので、A2の行は空白にします。表の周りには1マス以上の空白セルを設定してください。上の表の中で、A5の行を第1条件として「1,2・・・」と昇順に並び替え、A4の行を「おえういあ」のように降順に並び替えるとします。
下記のマクロを実行すると
となります。
行列を並び替えるのに、2つの列を参照して並び変えることを考えてみます。条件の1つは、昇順に並べる。条件の2はランダムに並べる。◆3◆のところでランダムに並べ替えることをやっていましたが、俳句教室などで15人の人が一人が2句を持ち寄りそれをランダムに並び替えてみたところ、同じ人の句が並んでしまうという状態になっていました。入力時点で投句票から並べて入力していくのでそのような状況になってしまうようです。連続させないために5回ほどマクロを実行して同じ人の句が離れるようにさせていました。今回は、一つの行を同一人物を数える欄を設けたとしてこのマクロを考えてみました。
A3を含む表としてマクロを作成しているので、A2の行は空白にします。表の周りには1マス以上の空白セルを設定してください。上の表の中で、第1の条件としてA5の行を「1,2・・・」と昇順に並び替え、第2条件としてA4の行をランダムに並び替えるというものです。こうすることによって同じ人の句が並ぶのは1と2の境界部分だけとなり連続する確率もかなり減るものと考えられます。
下記のマクロを実行すると、1回目は
2回目のマクロ実行で
3回目のマクロ実行で
となります。A5行は1の組と2の組とに分かれたままでA3行とA4行とが変わっていくようになります。個人の複数の句をランダムに並び替えるには効率が良さそうです。
エクセルの縦書き俳句一覧表をワードにいきなり貼り付けようとすると、俳句の行が先に書き出され、作者の欄はその後にまとめて表示される。ワードで縦書きの表にするために試行錯誤。思いついたのは、まず縦書き表示の表を別のシート、ここではSheed3のA2の位置から貼り付けるという作業を行った。その後にその表を選択してワードに貼り付け、表を解除するという作業をしました。行列を入替え、俳句教室の中で氏名欄に丸をつける必要があって付けていたのでそれを除き行列を入替え貼り付けるというマクロを考えてみました。
下記のマクロを実行すると、1回目は