Excelの 1つのセルに数字がカンマ区切りで入っていて 
初めと終わりにはカンマはついていません
それが縦に200くらい並んでいます
数字の数は1~10までで 何個入っているかはセルによって1個だったり10個だったりします
数字の初めと終わりにカンマを入れたいのですが自動ではいるようにできるでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (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は「動き」を見ながら「コード」を覚えていった方が入りやすいです。少しずつがんばってください。でも、このような繰り返し実行のステートメントや条件分岐は、マクロの自動記録では書いてくれませんから、ヘルプや参考書で勉強してみては?。
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/05/02 19:45

もう一列追加して、「=CONCATENATE(",",該当セル,",")」とするのはだめで

しょうか?
    • good
    • 0
この回答へのお礼

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

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

と 教えてくれました
おかげさまで 今回に限らず こらからもExcelをより便利に使えます
本当にありがとうございました

お礼日時:2001/05/01 22:04

ramuramuさんこんにちは


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

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

この回答への補足

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

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

補足日時:2001/05/01 22:06
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qカンマ区切り

SQLを使用しています。
商品コードが1フィールドにカンマ区切りで複数格納されています。
それを変数に格納していきたいのですがどうもうまくいきません。
格納状態→ ,755,333,6,11585,857 のような状態です。
よろしくお願い致します。

Aベストアンサー

私もここ最近に同じ事で悩んでましたよ。
VBで、For~NextとInstr関数で取れますよ!

(例)
Dim i As Integer
Dim j As Integer
i=0
j=1

For i=1 to Len(商品コード)
変数=Instr(j,商品コード,",")
Next i
で取れると思います。

Qエクセルデータをテキストファイル(カンマ区切り)に変換しアクセスへインポートしたい。

タブ区切りは出来るのですが、アクセスにインポートが出来ません。エラーが出てしまいます。(エラー内容はフィールド名が不正です。)
カンマ区切りだと以前問題なくアクセスへインポートできたので、エクセルをカンマ区切り?のテキスト形式にしたいのですが・・。
"郵便番号" "住所" ・・・・・のような

Aベストアンサー

EXCELで、「名前を付けて保存」で形式を「カンマ区切り」にして、
ファイル名欄の「ファイル名」前後をダブルクォーテーション(Shift+2)でくくってください。指定どおりの名前で保存できますよ。
例;TEST.XLSを保存する際、ファイル名欄が TEST なら "TEST.TXT" とする。



でも、アクセスで直接「EXCELからのインポート」ではだめなのですか?

Qテキスト(カンマ区切り)のインポートの方法

アクセス初心者です。
以下の内容をACCESS2000で行う場合の方法を教えて下さい。

1、B.csvをA.mdbにデータをインポート

2、ファイル構成は
 コントロールセクション 発注先メーカーの情報 項目数 10
 ヘッダセクション 邸名情報 項目数 100
 データセクション 商品明細情報 項目数 45
 トレーラセクション 明細件数情報 項目数 1(ヘッダセクションと対で作成される)

3、コントロールセクション1行に対しヘッダセクション、データセクション、トレーラセクションを1セットとし繰り返される。
ヘッダセクション(邸名情報)に対しデータセクション(商品明細情報)は複数行の場合がありえる。

宜しくお願い致します。

Aベストアンサー

コントロールセクションとヘッダ・データ・トレーラセクションを関連付けるキー情報がヘッダ・データ・トレーラセクションにあって、かつ、ヘッダとデータを関連付けるキー情報がヘッダ、データの両方にあるのなら、awk とか peal と言ったツールで、
項目数=10 の行だけをコントロール.CSV に出力
項目数=100 の行だけをヘッダ.CSV に出力
項目数=45 の行だけをデータ.CSV に出力
項目数=1 の行だけをトレーラ.CSV に出力
としてから、それぞれの CSV をインポートしてやればいいと思うのですが、たぶん、そういうふうにはなってないんでしょうね。
そういうふうになっていない場合、あらかじめインポート先のテーブルの構造だけを作っておいて、VBA で
1行読み込み→対応するテーブルに書き込み
をループ処理しなければならないと思います。

Qカンマ区切りで格納するカラムって設計上ありでしょうか?

例えば、1,2,5,8,9,10
というような形でデータを格納するカラムをテーブルに作ろうと思っているのですが設計上ありでしょうか?
格納したあとは、それSELECTのIN(1,2,5,8,9,10)で
使用するのが主で、更新時のキーが別にあればOKという感じでしょうか?
こういう場合に、このような設計をした事があるよ。いった例など教えていただけると幸いです。

Aベストアンサー

「設計上あり」とは、CSV入出力を考慮しての事でしょうか?

データベースソフトでは、テキスト入出力をする場合に区切り文字をデフォルトの「,」以外にもタブとか任意の文字に設定できることが多いので、その意味では「あり」です。Mysql、firebird、ACCESS、桐いずれもOKです。

あと「更新時のキーが別に云々」のところもよく意味がわからないのですが...

学術的意味合いで「データベースとはかくあるべき」というのがあるのかどうかは知りませんが。

Q別々のセルに入力した数字を一つのセルに表示したい

A1に3、B1に4と別々に入力した数字をC1で34と表示させるにはどうしたらいいでしょうか?

Aベストアンサー

以下の通りです。
・=A1&B1
・=CONCATENATE(A1,B1)


人気Q&Aランキング

おすすめ情報