• ベストアンサー

Excelのマクロを使って数字を入力したいのですが、方法がわかりません。

ExcelのG列とI列にランダムに3桁の数字を作成しました(=ROUND(RAND()の数式を使いました)。 あいだのH列には‐(ハイフン)が入力されています。 これらを別のシートの同じ列に形式を“値”と選択してコピーしました。これらの数字をB列に入力したいのです。 具体的には、たとえば、G1セルに265,H1セルに-、I1セルに849と入力されているとしたら、B1セルに265-849と入力されるように設定したいのです。 それぞれの列にはランダムな数字が並んでおり、対応するB列のセルに同様に入力されるように設定したいのですが、方法がわかりません。マクロを使えばよいとのことですが、どなたか詳しく教えてください。 よろしくお願いします。

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

  • ベストアンサー
  • ASIMOV
  • ベストアンサー率41% (982/2351)
回答No.1

マクロでなくても簡単に出来ますよ その1  B1 =G1&H1&I1 その2  B1 =G1*1000+I1 とし、書式設定で「ユーザー定義」「000"-"000」 など...

1noma100
質問者

お礼

ありがとうございます。 これは仕事で必要になったものなので、あす会社で使ってみたいと思います。その後追って連絡いたしたいと思います。 早速の御回答本当にありがとうございました。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。 >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

1noma100
質問者

お礼

今回は数字を固定し、重複のないことを確認して行いました。 なにぶん時間がなかったものですから、Wendy02様の教えてくださった方法を試すことはできませんでしたが、無事に解決することができました。 皆さんのおかげです。 本当にありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

答えは出ているが、私もセルの値を&で連結すれば済むと思うよ。 複雑な関数式なら>あす会社で使ってみたいと、というような検証も必要だが、パソコンなどなくてもわかるレベルの問題です。 &は結合演算子といい、+-*/と同列のもので、エクセル数式の基礎的なものです。 質問の意味を誤解してなければ >別シートまで使い >マクロを使えばよいとのことですが というのはナンセンス。

関連するQ&A

  • Excelの入力式について

    Excelの入力式について教えてください。 たとえば、A1セル~F1セルに数値が入っていて、G1セルA1+B1の値、H列にC1+D1の値 I列にE1+F1の値としたい場合、 G1セルに数式を入れてH列にコピーするとB1+C1になってしまいます。 上手くやる方法はないのでしょうか。 1列ずつわざわざ空白列を作るのは嫌ですし、たくさんあったら数式を打ち込むのも大変です。。。

  • エクセルで順列が違う数列の認識はできますか?

    タイトルが分かり辛い表現になってしまいました。 ランダムな四桁の数字がA列に並んでいるとします。 ここでB2に任意の四桁の数字を入力します。 この数字で構成されている四桁の数字が入っているセルを任意の色で塗りつぶすように 条件付き書式を設定したいのですが、どのようにすればいいのでしょうか? 画像の例で言えば1234と打ち込んでますので 「1234」「1243」「1324」「1342」「1423」「1432」 「2134」「2143」「2314」「2341」「2413」「2431」 「3124」「3142」「3214」「3241」「3412」「3421」 「4123」「4132」「4213」「4231」「4312」「4321」 の24つの数字が出てきた所に塗りつぶしを行いたいのです。 B2の数字を変えても反応するようにしたいので 条件に以上の24つを設定する方法ではできません。 エクセルは2010を使っています。 ちなみにA列にはRAND関数を使っています。 宜しくお願いします。

  • エクセルで入力した数字が変わってしまうのですが

    度々お世話になっており、大変助かってます。 また、教えて下さい。 オフィス2000のエクセルを使用しておりますが、セルの書式設定でユーザー定義により次のように設定しましたが、末尾の数字が入力した数字ではなく、必ず0になってしまいます。設定方法が悪いのか解決方法を教えていただきたいと思います。 ユーザー設定 #"-"##"-"###"-"##"-"#######"-"# 16桁の数字の途中にハイフンを入れ区切りたいのです。 よろしくお願いします。

  • 「エクセル」で、ハイフンを数字として入力するには?

    「エクセル200」を使っています。 ハイフンを使った数字(例えば「1-3」)を入力すると、 自動的に「1月3日」となってしまい、困っています。 それまでは「セルの書式設定」の「表示形式」は 「標準」になっていたはずなのですが、 これもまた自動的に「日付」になっています。 「表示形式」を「文字列」にすると ハイフンはそのままに、「1-3」と入力出来るのですが、 なんとか「数字」としてハイフンを入力する方法は ないでしょうか? と、いうのも「エクセル」で作製したデータを、 「CSV(カンマ区切り)」形式で保存したいのです。 「エクセル」で文字列としてキチンとハイフンを 入力したつもりでも、 「CSV」にするとまた「日付」表示に 戻ってしまっているのです。 これは「CSV」に「文字列」を認識する機能が ないせいでしょうか? どなたかお教え願います。

  • エクセルで同じ構成で並ぶ4桁数字を認識する方法は?

    エクセルでA1セル以下に順列でない4桁の数字が並んでいるとします。B1セル以下にもランダムで順列でない数字が並んだ時、A列と同じ構成で並んでいる4桁数字のセルを塗りつぶすような条件付き書式設定をしたいのですが、どのようにすればいいのでしょうか?     A          B 1  2588        1458   2  2336        5275 3  6510        4892 4  7525(←色塗)  9554 5  3992        7635 6  7329        5440 7  4054(←色塗)  1859 上記のようなイメージなのですが・・・、宜しくお願いいたします。

  • Excel のセル内の数字抽出

    セルの中にランダムの数字が入っている状態から、共通する数字を抽出する方法を教えてください。 例    A  B   C  D  E   F  G  H   I 1 228 236 246 258 241 452 785 453 741 2 478 247 236 159 147 236 478 345 236 3 222 223 445 160 401 305 360 236 474 この様な数字が1つのセルの中に入力されていて 1、236という数字がこの表の中にいくつ存在するかを抽出する方法。 2、各行・列を参照して共通する236を抽出する方法。 以上2点についてお願いいたします。

  • エクセルで数字の重複を防ぐ方法

    CからG列に1から12までの数字をランダムに入力しています。 その数字が重複していると困るので、数字が重複していた場合 H列にエラーメッセージが出るようにしたいのですが、良い方法は 無いでしょうか? 200行くらいまで入力する予定です。 よろしくお願いします。

  • Excelで、ハイフンを消したいけど000は残したい

    A列に、 00033-11-55 00432-12-01 00022-11-56 ・・・・・・ と、5桁-2桁-2桁 の数字がずーっと並んでいます。 これを、B列の、各となりのセルに、 000331155 004321201 000221156 ・・・・・・ というふうに、 ハイフンは消すが、000や00は残した数字を表示させたいです。 単に置換で、「-」を「」に置き換えると、00や000が消えてしまいます。。。。。 A列の、セルの書式設定を文字列にしても駄目でした。 どうすればいいでしょうか? 何かうまい関数などは、ありませんでしょうか?

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

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

  • エクセル 12桁以上の数字の入力について

    エクセルのセルに12桁以上の数字を入力(貼り付けも含む)すると 1.23457E+11 のように表示されます。入力したとおりに表示させるにはどのような設定をすればいいか教えてください。 セルの書式設定の表示形式を「数値」などに変更するか ’を付けて文字列として入力すればいいのは分かっていますが面倒なので何もしないで最初から123456789012 のように表示させたいのです。セルの幅を広げても1.23457E+11のままです。 数式バーには 123456789012 のように正しく表示されています。セルの書式は「標準」になっていてサンプルは1.23457E+11となっています。 よろしくお願いします。

専門家に質問してみよう