- ベストアンサー
Excel2003でcsvの指定行を読み込む
- Excel2003のマクロを使用してcsvファイルを読み込む方法について教えてください。
- エクセル上でボタンを押すと指定した行のみを読み込んでエクセルのシートに代入することは可能でしょうか?
- csvファイルの中には整数が羅列されており、行ごとに整数の数が異なります。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
ANo.3です。 読み込む毎にカウントを行なう。 カウント数(行数)に応じて処理を変更する。 変更はIF文・SELECT CASE文などで分岐する。 2行目以降については、前回の質問の方法がいかせるはず。 書き出すシートの指定を忘れずに。 と言った所ではないかと。
その他の回答 (6)
- n-jun
- ベストアンサー率33% (959/2873)
読み込んでの処理が困惑するのであれば、csvファイルを開いておいて そこからデータを引っ張り込むようにしてみては如何でしょう。
- redfox63
- ベストアンサー率71% (1325/1856)
http://oshiete1.goo.ne.jp/qa4320861.html の関連質問なのでしょうか? でしたら現状できているコードをお示しになった方が解決が早いかと データの区切りに法則性がないと補足されていますが 以前はカンマ区切りだとして質問なさっていますよね …
補足
すみません。カンマ区切りでした・・・。 現状、まだ処理部分のコードは出来ていません。
- imogasi
- ベストアンサー率27% (4737/17069)
#2です。補足いただいたのですが 疑問点がいっぱい。 ーーー 基本的には、CSVの行データを、エクセルシートでは列方向(上から下)にセットしたいのですか? ーー >シート1のに、2行目を読み込んだらシート1のB14:B145に、3行目を読み込んだらシート2のB14:B73、E14:73、H14:H73・・・というように・・・ 第1行目とは、氏名(例 大山 一郎)ですよね それをA1:K1とは、同じ名前を11列に渉って入れるのですか? >2行目を読み込んだらシート1のB14:B145 とは第2行目だけは、132行分のCSV項目があるのですか? 第3レコードの60項目?と大きく違いますが。 >シート2のB14:B73、E14:73、H14:H73 ココでシートが変わる理由は? ココ以後はSheet2にデータをセットし、 60項目あるということですか? それ以後は 第3レコード B14:B73 第4レコード E14:73 第4レコード H14:H73 ・・・ のように、3列(中2列飛ばし)ごとにセットするのですか。 >それぞれの行の整数の数は違います これと第3レコード以後は60項目らしく 第3レコード B14:B73 第4レコード E14:E73 第4レコード H14:H73 とあって それでは同じ項目数のようでは無いですか?
補足
分かりづらくてすみません。 >基本的には、CSVの行データを、エクセルシートでは列方向(上から下)にセットしたいのですか? そうです。csvの行データをエクセルの列方向にセットしたいと考えています。 >第1行目とは、氏名(例 大山 一郎)ですよね それをA1:K1とは、同じ名前を11列に渉って入れるのですか? すみません。K1に氏名をセットします。 >2行目を読み込んだらシート1のB14:B145 とは第2行目だけは、132行分のCSV項目があるのですか? 第3レコードの60項目?と大きく違いますが。 2行目は132項目あります。 >シート2のB14:B73、E14:73、H14:H73 ココでシートが変わる理由は? ココ以後はSheet2にデータをセットし、 60項目あるということですか? 都合上そうなってしまいます・・。 1行目はシート1のK1に、2行目はシート2のB14:B145に、3行目はシート1のD3:P3、4行目はシート1のD6:P6、5行目はシート1のD9:P9、6行目はシート1のR3:W3、7行目はシート1のR6:W6、8行目はシート3のB14:B73、E14:E73、H14:H73にセットしたいと考えています。
- n-jun
- ベストアンサー率33% (959/2873)
既に別に質問を立てていたのですね。 >指定した行のみを読み込んで、 とは、読み込んだ行に”指定文字”が含まれているかどうかを判定し、 含まれていたらセルへの書き込みを行ない、そうでなければ書き込まず 次の読み込みを行なっていくだけです。 ただし、”指定した行のみ”の詳細を明確にしないと回答も困難です。
補足
前のスレからありがとうございます。 詳細はANo.2の補足の通りです。
- imogasi
- ベストアンサー率27% (4737/17069)
質問の表現が不十分では? >指定した行のみを これは1行のみを指定するのか。 その行番号は何がはいっているか、通常知らないはずでは。 氏名(例 三浦 一郎)などを指定し、三浦 一郎に関するデータを表示したいのでは? 三浦 一郎はデータを総当りすれば探せるが、三浦 一郎のデータ行の最後はどうして判別できるか? 一人文の行数は決まっているのか? A列だけデータがある行が出ると次の者のデータの始まりと看做すのか?。 こういうことを心配しないで、4行目の4を指定すると第4レコードを表示するのなら私の思い過ごしですが。 ーーー >1) の指定の方法などが分かりません。 こんなのWEB照会すればわかることだよ。 http://www.k1simplify.com/vba/tipsleaf/leaf291.html など。 このレベルで質問すれば、丸投げ質問になるよ。
補足
すみません。質問の表現が不十分でした。 一つのcsvファイルに例のような形でデータが入っていて、 例) A B C D E F G ・・・ 1 "氏名" 2 2 2 1 3 2 ・・・ 3 1 3 2 3 1 2 3・・・ 4 3 3 3 3 3 1・・・ 5 2 1 2 3 ・・・ 各行の整数の値はテストの選択番号で、1行目を読み込んだらシート1のA1:K1に、2行目を読み込んだらシート1のB14:B145に、3行目を読み込んだらシート2のB14:B73、E14:73、H14:H73・・・というようにcsvの値を代入したいと考えています。別に行数を指定する必要はありませんでした。
- redfox63
- ベストアンサー率71% (1325/1856)
1) Openステートメントでファイルをオープンする 2) Line Inputで指定行の直前まで空読みする 3) Line Input指定行を読み込む 4) Closeファイルを閉じる 5) データを分解する データの区切りに法則性があるなら Splitで分解 統一性の無いの区切り方式なら自前の関数を作成 6) 指定セルへデータの流し込み といった手順でしょう 1) の前にファイルの指定や 何行目を読み込むとか、どこのセルへ転記するなどの処理も必要ですが ・・・
補足
ご回答ありがとうございます。 もしcsvの中身が A B C D E F G 1 "氏名" 2 2 2 1 3 1 3 1 3 2 3 2 3 なら、どのようにすればよいのか教えていただけないでしょうか? 1) の指定の方法などが分かりません。 5)のデータ区切りに法則性はありません。
補足
ありがとうございます!その方法で挑戦してみます。