Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


6406 / 13646 ツリー ←次へ | 前へ→

【45308】TEXTファイルの読み込み 四谷スミレ 06/12/18(月) 21:42 質問[未読]
【45311】Re:TEXTファイルの読み込み neptune 06/12/18(月) 22:14 回答[未読]
【45313】Re:TEXTファイルの読み込み Kein 06/12/18(月) 23:18 発言[未読]
【45362】Re:TEXTファイルの読み込み 四谷スミレ 06/12/20(水) 19:44 質問[未読]
【45388】Re:TEXTファイルの読み込み Kein 06/12/21(木) 17:07 発言[未読]

【45308】TEXTファイルの読み込み
質問  四谷スミレ  - 06/12/18(月) 21:42 -

引用なし
パスワード
   こんばんは。お助けください。。

エクセルで必要部分だけテキストを読み込みたいのですが、以下のような
構造になっています。
「その他データ」は不要なデータで、文字列であったり、数字であったりします。

その他データ
その他データ
その他データ
日付
名前A
その他データ
その他データ
個人データ1
170
65
18
(↑この名前Aの例では3個の数字データですが名前Bになったら5個
かもしれない可変データです)
その他データ
その他データ
個人データ2
50
67
100
67
32
(↑この名前Aの例では5個の数字データですが名前Bになったら3個
かもしれない可変データです)
その他データ
その他データ
その他データ
個人データ3
6'54
5'33
(↑この名前Aの例では2個の数字データですが名前Bになったら3個
かもしれない可変データです)

となり、以下同じような感じで
日付
名前B
で始まり80人分くらい続きます。
いらない「その他データ」も人によって量がちがいます。
実際読み込みんだあとは

日付
名前A
個人データ1 170 65 18
個人データ2 50 67 100 67 32
個人データ3 6'54 5'33

日付
名前B
個人データ1 170 65 18 65
個人データ2 50 67 100 67 32 99
個人データ3 6'54

といった感じに整形したいです。
可能でしょうか?

【45311】Re:TEXTファイルの読み込み
回答  neptune  - 06/12/18(月) 22:14 -

引用なし
パスワード
   ▼四谷スミレ さん:
>といった感じに整形したいです。
>可能でしょうか?
よくデータを見てませんが、データに規則性があれば
可能です。

規則性がなければ、先ず、整理されたデータを作成する事から
はじめましょう。

【45313】Re:TEXTファイルの読み込み
発言  Kein  - 06/12/18(月) 23:18 -

引用なし
パスワード
   通常、テキストの読み込みは「一行づつ文字列型変数に入れる」ことになります。
変数を Variant型 にするとして、日付かどうかは IsDate関数 で分かりますから
"IsDateでTrueを返したら、その行と次の行は日付と名前として取り込む"
とすることが出来ます。問題は"その他データ"と"個人データn"と数値の区別です。
それらは何を目印にして判定すれば良いか、が分かればコードを書けると思います。

【45362】Re:TEXTファイルの読み込み
質問  四谷スミレ  - 06/12/20(水) 19:44 -

引用なし
パスワード
   ▼Kein さん:
>通常、テキストの読み込みは「一行づつ文字列型変数に入れる」ことになります。
>変数を Variant型 にするとして、日付かどうかは IsDate関数 で分かりますから
>"IsDateでTrueを返したら、その行と次の行は日付と名前として取り込む"
>とすることが出来ます。問題は"その他データ"と"個人データn"と数値の区別です。
>それらは何を目印にして判定すれば良いか、が分かればコードを書けると思います。
アドバイスありがとうございます。
>"IsDateでTrueを返したら、その行と次の行は日付と名前として取り込む"
とは具体的にどのようなコードになるでしょうか?

【45388】Re:TEXTファイルの読み込み
発言  Kein  - 06/12/21(木) 17:07 -

引用なし
パスワード
   Openステートメントのコードで、一行読み込む場合

Line Input #1, Buf

のようにしますから

i = i + 1
If IsDate(Trim(Buf)) Then
  Cells(i, 1).Value = Trim(Buf)
  Line Input #1, Buf: i = i + 1
  Cells(i, 1).Value = Buf
End If

などと続ければ、日付とその下の行だけは確実にセルに入ります。

6406 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free