-PR-
解決済み

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

  • 困ってます
  • 質問No.70114
  • 閲覧数1071
  • ありがとう数3
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 92% (13/14)

Excelの 1つのセルに数字がカンマ区切りで入っていて 
初めと終わりにはカンマはついていません
それが縦に200くらい並んでいます
数字の数は1~10までで 何個入っているかはセルによって1個だったり10個だったりします
数字の初めと終わりにカンマを入れたいのですが自動ではいるようにできるでしょうか?
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.3
レベル12

ベストアンサー率 52% (206/389)

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

お礼率 92% (13/14)

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

その他の回答 (全2件)

  • 回答No.1
レベル12

ベストアンサー率 52% (206/389)

ramuramuさんこんにちは
結論からいうと可能です。ただし、私の方法ではVBAを使いますので、その方法でもよろしいということであれば返信ください。

概要としては、各セルの値を順々に取得し、その値の前後にカンマを付けて、再度セルに転記するループステートメントを実行します。
補足コメント
ramuramu

お礼率 92% (13/14)

TTakさんありがとうございます
Kumtさんの方法で出来ましたが
VBAを使う方法にも挑戦してみたいのです

私はExcelの簡単な関数とマクロしか使ったことが無いので
理解できるか自信がありませんが 教えていただけたらうれしいです
ちょっと無理でしょうと思われたら そうおっしゃて頂いてかまいません
よろしくお願いします
投稿日時 - 2001-05-01 22:06:08


  • 回答No.2

もう一列追加して、「=CONCATENATE(",",該当セル,",")」とするのはだめでしょうか?
お礼コメント
ramuramu

お礼率 92% (13/14)

kumfさん ありがとうございます
教えていただいた方法でできました
その後 Officeアシスタントが

アンパサンド(&)を使用して数式中の文字列を結合することが出来ます
たとえばセルA1に "Week” セルA2に ”Day” ガ入力されている時
数式 ”=A1&A2”の計算結果は ”Weekday”となります

と 教えてくれました
おかげさまで 今回に限らず こらからもExcelをより便利に使えます
本当にありがとうございました
投稿日時 - 2001-05-01 22:04:26
このQ&Aのテーマ
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
-PR-
-PR-
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


専門家があなたの悩みに回答!

-PR-

ピックアップ

-PR-
ページ先頭へ