プロが教えるわが家の防犯対策術!

皆さん、始めまして。

テキストファイルのデータからエクセルへ読み込むエクセルマクロを構築したく質問させて頂きました。
テキストデータでリストの一覧をExportできるのですが、その整理が非常に手間なので自動化したく
マクロを作成する事を検討しております。

環境はデータ内容を下記に記載させて頂きます。

[環境]
Windows7 / Excel2007

[テキストデータサンプル]
下記に貼り付けたように条件によって出力方法が違うデータがあります。
・レコードが1つのものは項目がたてに並んでいる。
・レコードが2つ以上になると項目が横にならぶ。

処理番号 : 001-H20120910001

処理記録

----------------------

記録 日時    年齢   地域


0 20120712 63 東京
1 20120912 63 東京

(結果数 = 2)

--- END



処理番号 : 001-H20120919999

処理記録

----------------------

記録 = 0

日時 = 20120909

年齢 = 19

地域 = 神奈川

(結果数 = 1)

--- END

[実行後に得たい情報]
処理番号で検索し、その中のデータを下記ならびでエクセルデータに変換したいと考えています。

001-H20120910001 0 20120712 63 東京
001-H20120910001 1 20120912 63 東京
001-H20120919999 1 20120909 19 神奈川

エクセルのマクロは勉強をし始めたばかりで初心者程度の知識ですが、
もしよろしければご回答、ご助言いただければと存じます。

よろしくお願いいたします。

A 回答 (1件)

Excelに文字列としてA列に取り込んだとして(1行目を挿入し) B2セルに


=IF(LEFT(A2,4)="処理番号",RIGHT(A2,16),IF(ISNUMBER(LEFT(A2,1)*1),INDEX(B:B,ROW()-LEFT(A2,1)-1)&" "&A2,
B1&REPT(" 1",LEFT(A2,4)="記録 =")&REPT(RIGHT(A3,9),LEFT(A3,4)="日時 =")&
REPT(RIGHT(A3,3),LEFT(A3,4)="年齢 =")&REPT(SUBSTITUTE(A2,"地域 =","",1),LEFT(A2,4)="地域 =")))
下へオートフィル

C3セルへ
=IF(B3=B2,"",IF(LEN(B3)>32,B3,""))
下へオートフィル
C列でオートフィルタ 空白以外のセル

画像添付
たたき台
「テキストファイルからデータ読み込みに関し」の回答画像1
    • good
    • 0
この回答へのお礼

CoalTar様、

お忙しい中回答ありがとうございます。

関数でここまで作りこめるとは目からうろこです。早速試してみました。
26行目以降で"記録 = 0"の場合も私のサンプル結果で1としていた為、
そちらの処理まで入れていただきありがとう御座います。
実際には0ですので、「REPT(" 0",」として使用させていただきました。


こちらのデータは10000レコード以上あり、頻繁にリスト化を実施する為こちらの処理もVBAで記述できれば
と考えました。

出力もDBに落としやすい形がいいとアドバイスももらった為、各項目を1Cellに割り当てるような
つくりにしていきたいと考えています。

A B C D E
001-H20120910001 0 20120712 63 東京
001-H20120910001 1 20120912 63 東京
001-H20120919999 0 20120909 19 神奈川

当面は頂いた関数を駆使して整形し、再度張りなおす事で対応させて頂きます。
本当にありがとうございました!!

お礼日時:2012/09/11 19:33

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