• ベストアンサー

カンマを自動的に挿入できますか?

TTakの回答

  • ベストアンサー
  • TTak
  • ベストアンサー率52% (206/389)
回答No.3

ramuramuさんこんにちは マクロを使ったことがあるということですので、次の段階へのステップとして捉えてください。 ”新しいマクロの記録”>”記録終了”とすると、何も記録されない空のマクロ(プロシージャ)ができますよね。そこに以下のプログラムを貼り付けてみましょう。このマクロはA列にある数値をすべてカンマで挟む動作をします。 Sub Macro1() '-----ここからコピー Dim I As Long, dat As String For I = 1 To Range(Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Address).Row + 1 dat = Cells(I, 1).Value If dat <> "" Then Cells(I, 1).Value = "," & dat & "," Next I '-----ここまでコピー End Sub "Range(Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Address).Row + 1" はA列が何行目まで記入されているかを取得するために作った関数です。"Cells(ActiveSheet.Rows.Count, x)"の部分は、x=1なら列A、x=2ならば列B、x=3ならば列Cということになります。繰り返しマクロ(コード)を走らせる場合はFor~Nextステートメントを使用します。For I=1 to Y でI=1(行目)から、I=Y(行)まで同じマクロ(カンマではさむ)を実行することになります。例えば10行目までデータが入っていたならば、先程の関数は11という数字を返すので、Y=11となり、このマクロは11回繰り返して実行されます。 次にIFステートメントで、コードを実行するか否かを分岐しています。この例では、セルが空欄の時はコードの実行を飛ばします。If A<>"" Then B は、「Aが空白でないならばBを実行する」ことを意味します。さて、実際にカンマ挟みを行うマクロは次の2行だけです。 dat = Cells(I, 1).Value '<-- datという変数にI行目のセルの値を代入する Cells(I, 1).Value = "," & dat & "," '<-- I行目のセルに ","で挟んだdatを代入する "&"はアンバサンドといって文字列を繋げる働きをします。 簡単に説明しましたが、VBAが初めてという場合は「まあ、こんなもんか」程度でいいですよ。VBAは「動き」を見ながら「コード」を覚えていった方が入りやすいです。少しずつがんばってください。でも、このような繰り返し実行のステートメントや条件分岐は、マクロの自動記録では書いてくれませんから、ヘルプや参考書で勉強してみては?。

ramuramu
質問者

お礼

TTakさん解りやすく書いてくださってありがとうございます でもすぐに出来ましたとは言えそうにありませんので  これから勉強しながら取り組みたいと思います 今までVBAは私にとっては便利そうでも無いし 難しそうなので 遠ざけていましたがこれを機会に勉強しようと言う気になりました 本当にありがとうございました

関連するQ&A

  • エクセルで入力数字に自動的に,(カンマ)をつけたい。

    あけまして、おめでとうございます。 早速ですが、質問させてください。 エクセルでオートSUMのを設定したセルに数字を入力した時、自動的に,(カンマ)をつけたいのですが、その設定方法を教えてください、よろしくお願いいたします。 本年もどうぞよろしくお願いいたします。

  • csvファイルのヘッダとカンマの関係

    ヘッダ付きのCSVデータがあります。 テキストファイルとしてエディタで開くとカンマ区切りでした。 エクセルで開くと、うまくヘッダに沿ってデータを確認できます。 そのセルの値の中には、"カンマ"が含まれています。 なぜエクセルは、カンマ区切りのデータで値にもカンマが存在しているのにヘッダに沿って表示できるのでしょうか? また、このデータをデータベースに登録する時に、 カンマ数で、エラーしました。エクセルのように、 ヘッダに沿ってデータをコピーする方法を教えてください。

    • ベストアンサー
    • MySQL
  • エクセルでカンマ区切りのscvファイル

    エクセル97を使っています。 以前は、保存時にカンマ区切りのscvファイルとして シートを保存できたのですが、いつのまにかできなくなってしましました。 セルに数字を入れたタテ1列のデータなのですが、 scvファイルはできるのですが、カンマではなく改行になってしまいます。 (同じく、タブ区切り、スペース区切りも改行になります) これはどこかの設定がかわってしまったのでしょうか? どうすれば直せるか、ご存知の方がいらっしゃいましたらお教え下さい。

  • エクセルで、数が自動的に合計されて出るようにする方法

    質問よろしくお願いします。 やりたいことは以下のようなことです。 1つのセルの中に、以下のように書かれてるとします。 鈴木、石井、田中、小泉、石原 5人なので、ここから自動的に「5」という数字を計算して、隣のセルなどに表示させたいのです。何か良い方法はないでしょうか? 別に、コンマで区切り必要はないです。これからこういう入力をかなりたくさんやりますので、「,」でも「/」でも何でも良いです。とにかく、数が自動で合計されて表示されれば。

  • 「カンマ」と「コンマ」は同じ語源?

    今まで、何となく「カンマ」と「コンマ」は同じ語源で、基本的には同じものを指すのではないかと思っていました。 しかし、数字の桁区切りはカンマですが、「コンマ零点五秒」などと使う場合のコンマは小数点のことを意味し、言葉を入れ替えては使いません。厳然たる棲み分けがされています。 もしや、他人のそら似で全く別の語源から来ているのでしょうか? また、もし同じ語源なら、桁区切りと小数点の使い分けは、どのようにして発生したのでしょうか?

  • EXCElでの自動で行う掛け算の高度な使い方

    1 0 1 0 1 0 1 1 1 1 1 0 2 1 1 0 2 1 0 1 2 1 0 0 2 1 0 1 3 0 0 1 ・・・ のようなデータがあって 1 0 1 0 2 1 0 0 3 0 0 1 のように1なら1だけで、縦をすべて掛け合わせた値を、2なら2だけで縦をすべて掛け合わせた値を自動的に求めたいのですが、EXCELで自動で行うよい方法はあるのでしょうか? それぞれの数字でセル数は異なります。大量にデータがあるため、手作業だとものすごく時間がかかるため、わかる方いましたら回答よろしくお願いします。

  • 数字を入れると、自動で、カンマが付くようにしたい?

    10000とか、金額とかの数字を入れると、自動で、カンマが付くようにしたい? のです。 Win98・IEです。お願いします。

  • ふたつめのカンマと3つ目のカンマの文字列を表示させたい

    こんにちは。表題の件質問させていただきます。 EXCELで、Find関数を使い、カンマ区切のデータ中、最初のカンマが見でくる直前のデータを表示させています =IF(セル番地="","",(LEFT(セル番地,FIND(",",セル番地)-1))) が、表題のように、2番目と3番目のカンマの間の文字列を切り出したい、という場合にFIND関数でできなさそうです。 もし知恵を拝借できれば幸いです。 よろしくお願いいたします

  • カンマ区切りCSVファイルをVBAで読み込みたい

    こんにちは。EXCELのVBAに詳しい方、どうか教えてください! カンマ区切りCSVファイルをEXCELに読み込みたいのですが、 CSVファイルのデータが金額のため、データ自体にもカンマが含まれていて、 金額のカンマでも分割されてEXCELのセルに収まってしまいます。 データの区切りのカンマと、金額のカンマを区別して読み込む良い方法はないでしょうか。 とても困っているので、お解りになる方どうかご回答をお願いいたします。 ・CSVファイルのデータ   1,000 , 2,000 , 1,500 , 3,000 , 1,000 , 2,500 , 2,000  ↑金額のカンマでデータが分割されないように読み込みたいのですが・・・

  • セル内のカンマ ( , ) が消えません

    エクセルで表を作っています。その中で金額欄ではカンマ(,)を使いました。品番欄では使いませんでした。でも二個のセルだけカンマが付いてしまいました。どうしても消えません。ツールボタンは押してないのにどうしてかわかりません。どうしたらカンマが消せるのでしょうか?  入力して確定すると元に戻ってしまいます。 それと、頭の数字の0も確定すると消えてしまいます。どうしたら良いのでしょうか?