重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

数値が10個カンマで仕切られたCSVデータが在ります。
コレを読んで、セルB1からB10までに収めたいのですが、
簡単な方法は在りますでしょうか。

私は、頭からカンマが来るまでループで1個ずつ移動するくらいしか思いつきません。
配列は全く知りませんが、配列を使うと簡単とか、ありませんでしょうか。
宜しくお願いします。

質問者からの補足コメント

  • 忘れました。
    csvファイルの形は、
    123,4567,890,11,2234567,,,,35
    の様な横に長い1レコードです。

      補足日時:2024/11/20 17:41
  • 申し訳ありません、splitのお礼が抜けました。
    読ませていただきました。
    コレは素晴らしい関数ですよね。

    No.3の回答に寄せられた補足コメントです。 補足日時:2024/11/20 20:19

A 回答 (4件)

split関数を使用するとカンマで分割した結果を配列に格納できます。


以下のマクロは、lineの内容をカンマで分割して、B1~B10のセルに格納します。elmsに分割結果が格納されます。elmsは必ず、Variant型で定義してください。

Public Sub sample()
Dim line As String
Dim elms As Variant
Dim i As Long
line = "1,2,3,4,5,6,7,8,9,10"
elms = Split(line, ",")
For i = 0 To UBound(elms)
Cells(i + 1, 2).Value = elms(i)
Next
End Sub
    • good
    • 0
この回答へのお礼

早速ありがとうございました。
知りたかったのがまさにコレです。
アッと言う間に動いてしまいました。
「split」だったのですね。

お礼日時:2024/11/20 19:55

No3です。



うっかりミスをしてしまいました。
以下、訂正しておきます。

通常、CSVの1行をセルの1行に展開するのが普通ですが、ご質問はB1:B10の一列(縦)に展開したいのですね。
方法は基本的に同じですが、行列の入れ替えが必要になります。
(ループ等で一セルずつ記入してゆく場合は、同じですけれど・・)
    • good
    • 0
この回答へのお礼

ありがとうございます。
1番方が貼って頂いたコードで、終了しています。
色々ありがとうございました。

お礼日時:2024/11/21 15:12

こんばんは



CSVにはローカルルールがあるので、特にクォーテーション「”」を使うか否か等がどうなっているかにもよります。
対象のデータがカンマ「,」を含んでいる場合は、「カンマがくるまで」というロジックではうまくいきませんね。

「カンマやクォーテーションを含むデータはない」という事が明白なら、1行読み込んで、区切り文字(,)でsplitするのが簡単だと思います。
結果は配列になりますが、そのまままとめてセルに記入できます。
https://learn.microsoft.com/ja-jp/office/vba/lan …

ただし、商品コードのような(例:000123)などの文字列の場合に、うっかりそのままセルに記入すると、数値と解釈されて、セルには「123」と入力されてしまうようなこともありますので、ご注意ください。

「それなりに複雑」な場合は、エクセルに読ませて(=CSVをブックとして開く)、そのA1:A10を目的のブックのB1:B10にコピペする方法も考えられます。
(開いたCSVのブックは保存せずに閉じれば良いです)
もちろん、自前でCSVを読み込む処理を行っても良いです。

以下は、各種の方法について紹介されているサイトの一例です。
(ごく一般的な内容なので、検索すれば他にもいろいろ見つかるはずです)
https://excel-ubara.com/excelvba5/EXCEL111.html
この回答への補足あり
    • good
    • 0
この回答へのお礼

早速ありがとうございました。
色々説明いただき恐縮です。
サイトを読んでいましたが見つからず、質問しました。
貼って頂いたリンクはいつも見ているサイトで、
真っ先に見ていました。

お礼日時:2024/11/20 19:57

No1です。

CSVファイルの読み込み方法は理解されているかと思い、省略しました。もし、CSVファイルの読み込み方もわからない場合は、その旨補足してください。
    • good
    • 0
この回答へのお礼

ありがとうございます。
貼って頂いたコードで完了しています。
助かりました。

お礼日時:2024/11/21 15:14

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A