- ベストアンサー
Excelのマクロを使って数字を入力したいのですが、方法がわかりません。
ExcelのG列とI列にランダムに3桁の数字を作成しました(=ROUND(RAND()の数式を使いました)。 あいだのH列には‐(ハイフン)が入力されています。 これらを別のシートの同じ列に形式を“値”と選択してコピーしました。これらの数字をB列に入力したいのです。 具体的には、たとえば、G1セルに265,H1セルに-、I1セルに849と入力されているとしたら、B1セルに265-849と入力されるように設定したいのです。 それぞれの列にはランダムな数字が並んでおり、対応するB列のセルに同様に入力されるように設定したいのですが、方法がわかりません。マクロを使えばよいとのことですが、どなたか詳しく教えてください。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
マクロでなくても簡単に出来ますよ その1 B1 =G1&H1&I1 その2 B1 =G1*1000+I1 とし、書式設定で「ユーザー定義」「000"-"000」 など...
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 >ExcelのG列とI列にランダムに3桁の数字を作成しました(=ROUND(RAND()の数式を使いました)。 ×ROUND =INT(RAND()*1000) または、RANDBETWEEN(100,999) まず、おそらく、かなり近い時期に同じ数字が出てくるのは承知でおこなっているかと思います。元々、パソコンでは本当の乱数は出せませんので、見かけ上の乱数で、それを一様乱数と呼び、32768 種しかありません。いつ、同じものが出てくるか、良く観察してみてください。今回のマクロは良いサンプルだと思います。私は、あまり、この件を研究したことがありません。 さて、この場合は、当たり前のことですが、いうまでもなく、そのまま数式では数字は固定出来ませんから、マクロで値を固定するしかありません。もちろん、触らなければ、その数字は置いておくことが出来ますが、「計算命令(Calculate)」が行われれば、見ていた数字は消えてしまいます。以下のTest1 のマクロは、書き込む際に、Calculate 命令が働いてしまうので、見ていた数字は消えてしまいます。 >それぞれの列にはランダムな数字が並んでおり、対応するB列のセルに同様に入力されるように設定したいのですが、方法がわかりません。 一回ごとに乱数を出す方法と、すでに出ている数字を一度に固定化するのと、どちらがよいのか、関数の場合は、私は分かりません。たぶん同じような気がします。VBA側の乱数(Rnd)は、3桁ぐらいですと、同じものが出てくる確率が高くなるのが気が付きますので、それを避けるマクロを作らなくてはなりません。なかなか難しいです。 標準モジュールに、以下のマクロをおいて試してみてください。 1番目は、まとめてB列に書き出すものです。 2番目は、G1 と I1 の値を一つずつ記録して、次の行に書いていきます。 なお、H列は無意味ですので、無視させていただきました。 Sub Test1() Dim arg As Variant With Range("G1", Range("G65536").End(xlUp)) arg = .Address & "&""-"" &" & .Offset(, 2).Address Range("B1").Resize(.Rows.Count).Value = Evaluate("=" & arg) End With '------------------------------- End Sub Sub Test2() Static i As Long i = i + 1 Cells(i, 2).Value = Range("G1").Value & "-" & Range("I1").Value End Sub
お礼
今回は数字を固定し、重複のないことを確認して行いました。 なにぶん時間がなかったものですから、Wendy02様の教えてくださった方法を試すことはできませんでしたが、無事に解決することができました。 皆さんのおかげです。 本当にありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17069)
答えは出ているが、私もセルの値を&で連結すれば済むと思うよ。 複雑な関数式なら>あす会社で使ってみたいと、というような検証も必要だが、パソコンなどなくてもわかるレベルの問題です。 &は結合演算子といい、+-*/と同列のもので、エクセル数式の基礎的なものです。 質問の意味を誤解してなければ >別シートまで使い >マクロを使えばよいとのことですが というのはナンセンス。
お礼
ありがとうございます。 これは仕事で必要になったものなので、あす会社で使ってみたいと思います。その後追って連絡いたしたいと思います。 早速の御回答本当にありがとうございました。