• ベストアンサー

Rand関数を使って

A1のセルに=int(rand()*100+1)という関数を使って1から100までのランダムな数字を入れるようにしました。A2からA101までに連続した 1~100までの数字が入力してあります。 B列には、氏名が入力してあります。 で、A1に出たランダムな数値の行に色をつけたいのですが、マクロの書き方がわかりません。 どなたか教えていただけないでしょうか。 よろしくお願いいたします。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

No.2です! 補足に >さっそっくマクロを走らせてみましたが、残念ながら  >同じ数字が赤に変わるようです。 とあるのですが、A1セルと同じ数値の行に色がつくようにしたつもりです。 ただ・・・ 1行コードが間違っていました。 >j = Cells(1, Columns.Count).End(xlToLeft).Column の行を >j = Cells(2, Columns.Count).End(xlToLeft).Column に訂正してください。 そうしないとA列だけしか色がつかないと思います。 ※ 再計算されたときにマクロが走るようにしていますので、F9キーを押して試してみてください。 ※ 前回も書いたのですが、条件付書式で色が付いているセルはありませんよね? 条件付書式で色が付いている場合は変化しません。 他の原因ならごめんなさいね。m(_ _)m

aoisuzuran326
質問者

お礼

ありがとうございました。ナンバーだけではなく B列の氏名のセルにも色がつくようになりました。 本当に助かりました。ありがとうございます。

その他の回答 (2)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! 一例です。 For~Nextにしていますので、 あまりスマートでないかもしれませんが・・・ Private Sub Worksheet_Calculate() Dim i, j As Long j = Cells(1, Columns.Count).End(xlToLeft).Column Application.ScreenUpdating = False Cells.Interior.ColorIndex = xlNone For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row If Cells(i, 1) = Cells(1, 1) Then Range(Cells(i, 1), Cells(i, j)).Interior.ColorIndex = 3 '←赤にしています End If Next i Application.ScreenUpdating = True End Sub こんな感じではどうでしょうか? ※ 条件付書式で色が付いているセルは色が変更されません。 参考になりますかね?m(_ _)m

aoisuzuran326
質問者

補足

お答えありがとうございました。 さっそっくマクロを走らせてみましたが、残念ながら 同じ数字が赤に変わるようです。 マクロ初心者なので、マクロの中身の意味がわからず、どこをどう書き換えればいいのかわからず こまっています。

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.1

マクロで色をつける必要があるんでしょうか? セルの条件付書式の方が簡単だと思いますが。 A2セルなら条件付書式で、 「数式が」「=(A$1=A2)」 とか。 Excel(エクセル)基本講座:条件付き書式の使い方 http://www.eurus.dti.ne.jp/yoneyama/Excel/jyo-syo.html

aoisuzuran326
質問者

補足

ありがとございます。 A1からA100までというのは、たとえの話で実際はもっとたくさんのデータが入っています。 条件付き書式だとセルの選択が面倒なので、マクロでやりたいのです。 よろしくお願いします。

関連するQ&A

  • RAND関数です

    お願いします。 A1~A20までに入力枠があります この数値は他の箇所より参照しています。 このA1~A20の数値に対してB1~B20に=RAND()で乱数を発生するようにしていますが、ただ、データー入りがA1~A20行が最大で、A1~A7までの時とか毎回変化します。当然、データーの入っていない行にも乱数が発生します。 =IF(ISERROR(RAND()))、” ”、((RAND())))) で表示させないようにとしましたが、できません。 関数の」組み合わせ?マクロのコード? いい方法がありませんでしょうか、宜しくお願いします。

  • 関数 ランダム 指定した条件

    よろしくお願いします! =INT((10-1+1)*Rand()+1) のようにすれば、1~10までのランダムな数字が入力できる訳ですが、例えば2,3,5,7のように指定した数字からランダムで入力(選択)させることを関数を使って行う事は出来るのでしょうか? マクロを使わないと無理でしょうか? 全く別件ですが、Rand()の()内に何か入力して使う機会というのはあるのでしょうか?

  • エクセル関数 RAND関数で数字を固定させるには!?

    RANDで数値をランダムに発生させ、その数値を使い、他の場所へコピーすると 毎回ランダムに数値が変わりますが、発生させたあと固定するにはヘルプでは、 =RAND()を数式バーに入力しF9を押すと書いてますが、それでは変化するし 入力するとランダムな数字が数式バーにでて、リターンするとまた変化します どこのセルに入力するのか!?またそのランダムな数値をコピーして形式を値にしてコピーする方法しか思い当たりません。 なんとかヘルプで説明しているように簡単な操作でできませんか、どなたか ご存知でしたらよろしくお願いします。

  • RAND関数について

    エクセルでRAND関数を使ってるんですけど、シート1、セル5個にRAND関数を入れればセル5個とも数字が変わりますよね。それはそれでもいいけど、 シート2の方にもRAND関数をセル5個にいいれればこっちも変わってしまうんです。シート1をしてるときは、シート2は、変わらないんでほしいんです。 なにか方法はありますか? ついでに、同じシートでセル1つ1つが単独で変われないですか?

  • RAND関数について

    http://okwave.jp/qa/q6489522.html の質問をしながらさらに疑問に思ったことがあります。 ランダムな数字を発生させようとしてRAND関数を使用しました。 今回は1以上で小数点以下の無い数字を発生させようとしました。 また、今回は9999以下にすることにします。 この場合「=RAND()*10000」とし、 桁区切りで小数点以下を消したら表示はランダムな四桁(以下)の数字が現れました。 ここで(例えば)「1234」の数字が現れたら書式設定する事にし、 条件付き書式から「1234と等しくなれば書式設定」をしたのですが、 1234が現れても書式が変わりません。 見た目は1234でも内部で違う数値だからなのでしょうか? このように乱数を発生させて任意の数字が出てきたら書式設定はどうすればいいのでしょうか?

  • エクセル関数を使いこの様なことができますか?

    こんにちは エクセルのあるセルに数式(又は関数)を入力し、別のセルに数字を入力したら、セルの塗りつぶしの色が設定しておいた色に変わるようなことはできないでしょうか? (例えば、C1には当初は何も入力されておらず、そのC1にある数字を入力するとA1のセルの色が赤に変わるようなことを考えています。なお、色を変えたいセル自身には数字が入力されている場合といない場合と二通りあるため、いずれの場合も対応できるようにしたいのです。 つまり、初期状態では、A列(色を変えたいセル列)には数字が入ったセル、入っていないセルが混在しており、C列(ここに数字が入力されるたびにA列の対応する行のセルの色を変えたい)には何も入力されていない。この状態で、任意のC列のあるセルに数字を入力すると同じ行にあるA列のセルの色を変えたい、ということをしたいのです。) 具体的にA列にどの様な数式を入力すればよいかを教えて下さい。 (或いは、そのようなことをするための式(関数)はA,C以外の列のセルに入れる必要があるかもしれませんが(例えばB列)、それでもかまいません) よろしくお願いします。

  • エクセルでA列とB列に=INT(RAND()*2)+1というランダムで

    エクセルでA列とB列に=INT(RAND()*2)+1というランダムで1か2しかでない式をつくり、例えばA1とB1の数字が同じで、A2とB2も同じで、それが15回連続つづいたら、C15に*を表示させるというような式を作りたいです。(IFですか?)

  • エクセル関数で教えてください。

    例えば、A列の1行目からA列の100行目まで社員の名前が重複せずに100人分あります。B列1行目からW列100行目までにランダムに数字が入っています。数字は重複していません。この、数字(例えば5という数字)のセルの場所を特定したいのですが、関数でこの場所を特定する方法を教えていただけませんか? 結果的に必要なのは、5という数字が何行目にあるかだけですので、それだけ分かれば良いのですが。良い方法が見つかりません。 今回はマクロは一切使わない条件です。よろしくお願いいたします。

  • エクセルの関数の数式がわかりません。

    A列 B列 1 10 2 20 3 30 a 4 40 エクセルの関数の数式がわかりません。 B1~B4のどこかにaの入力があった場合、aの入力がある行と同じ行のA列に入力されている数字を別のセルに表示させたいです。 例えば、上記のようにB3にaがあるので、A3の30を、別のセルに自動で30と出るようにしたいです。 B列には、ランダムにaを入力しますので、aが別の行にある場合もあります。 この場合の数式を教えてください。 よろしくお願い致します。

  • エクセル関数の詳しい方ご教示ください。

    エクセルの詳しい方、ご教示ください。 A B C D E F G(表示したい列) 1行目 2 3 5 7 9 2 =知りたい関数 2行目  4 5 8 9 1 2 上記のようなランダムな数値データがあり、 ・Aの列に表示している数字の数だけ、 ・Bから右の列に移動した数字を、 ・Gの列に表示したい と、思っています。 例で考えると、 G1のセルは7 G2のセルは2 と表示されるイメージです。 Gにはどのような関数を使えばよいでしょうか?