• ベストアンサー
  • 困ってます

テキストファイルからデータ読み込みに関して。

皆さん、始めまして。 テキストファイルのデータからエクセルへ読み込むエクセルマクロを構築したく質問させて頂きました。 テキストデータでリストの一覧を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 神奈川 エクセルのマクロは勉強をし始めたばかりで初心者程度の知識ですが、 もしよろしければご回答、ご助言いただければと存じます。 よろしくお願いいたします。

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数141
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.1
  • CoalTar
  • ベストアンサー率40% (705/1742)

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列でオートフィルタ 空白以外のセル 画像添付 たたき台

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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 神奈川 当面は頂いた関数を駆使して整形し、再度張りなおす事で対応させて頂きます。 本当にありがとうございました!!

関連するQ&A

  • テキストデータをエクセルVBAで読み込む方法

    皆さん、始めまして。 関連[QNo.7692303] 上記にて関数を使って整形する方法をご回答いただきました。 今回は当時よりも便利性をあげ、エクセルのVBAを使ったものを作成したく質問させて頂きます。 テキストファイル(サンプルは下記参照)を読み込み、使いやすいようにエクセルへはめ込むのが目標です。 VBAは初心者なので、お忙しい中恐縮では御座いますが、ご教授いただければと存じます。 少ないデータで作成できたら、本番データへ拡張していきながらさらに理解を深められればと考えております。 [環境] Windows7 / Excel2007 [テキストデータサンプル] 下記に貼り付けたように条件によって出力方法が違うデータがあります。 ・処理番号内でレコードが1つのものは項目がたてに並んでいる。 ・処理番号内でレコードが2つ以上になると項目が横にならぶ。 ・記録、日時、年齢、地域の値はすべて可変 ・本来のデータは10項目以上あるが、サンプルデータとして4つ抜粋して下記に表記しています。 処理番号 : 001-H20120910001 処理記録 ---------------------- 記録 日時    年齢   地域 0 20120712 63 東京 1 20120912 63 東京 (結果数 = 2) --- END 処理番号 : 001-H20120919999 処理記録 ---------------------- 記録 = 0 日時 = 20120909 年齢 = 19 地域 = 神奈川 (結果数 = 1) --- END 処理番号 : 001-H20110910009 処理記録なし --- END 処理番号 : 001-H20109190022 処理記録 ---------------------- 記録 = 3 日時 = 20101109 年齢 = 26 地域 = 茨城 (結果数 = 1) --- END 処理番号 : 001-H20120910022 処理記録 ---------------------- 記録 日時    年齢   地域 0 20120712 63 東京 1 20120912 63 栃木 5 20120917 63 和歌山 (結果数 = 3) --- END [実行後に得たい情報] 処理番号で検索し、その中のデータを下記ならびでエクセルデータに変換したいと考えています。 A列      B列 C列    D列 E列 001-H20120910001 0   20120712 63   東京 001-H20120910001 1   20120912 63   東京 001-H20120919999 0   20120909 19   神奈川 001-H20110910009 001-H20109190022 3   20101109 26  茨城 001-H20120910022 0  20120712 63 東京 001-H20120910022 1  20120912 63 栃木 001-H20120910022 5 20120917 63 和歌山 エクセルのマクロは勉強をし始めたばかりで初心者程度の知識ですが、 もしよろしければご回答、ご助言いただければと存じます。 よろしくお願いいたします。

  • EXCELの日付データの比較

    EXCELの日付データについての質問です。 たとえば、あるテキストデータでH20.7.19とあったとします。 それとEXCELの日付データにもH20.7.19があったとします。 テキストデータのH20.7.19をEXCEL側に貼り付け、EXCELの日付データH20.7.19と比較させ、答え0(誤差0)を返してもらう方法はありますでしょうか? 宜しくお願いいたします。

  • Excel2010 VBAでテキストファイル読込

     初めて質問させていただきます。  Excel2010のVBAで下記のようなマクロを組み、テキストファイルを読込したところ、データの一部が誤変換されてしまいます。  誤変換内容  11/12/29 →2029/11/12  マクロを使用せず、Excelから直接テキストファイルウィサードを使って読み込んだ場合には、正しく「2011/12/29」となります。  (お恥ずかしい話ですが、Excelシートのセルに直接「11/12/29」と打ち込むと自動的に「2011/12/29」に変換されることを今回初めて知りました。)  同一項目には「11/12/29」形式と「20111229」形式が混在しており、「11/12/29は2011/12/29」、「20111229はそのまま」セルに格納するよう依頼されています。  従って、Array(1, 2)で文字列やArray(1, 5)でYMD形式の日付へ同一項目のデータを固定することはできなくなっております。  テキストデータは「カンマ区切り」の35項目です。  データはネットワーク内の他のPCドライブに保存されています。  因みに「 Workbooks.OpenText Filename:=」以下は、Excelのマクロ記録で取得したものです。  お忙しいところ恐縮ですが、よろしくお願いいたします。 【作成したマクロ】 Sub 読込() With CreateObject("WScript.Shell") .currentdirectory = "\\コンピューター名\c\フォルダ名\" End With Const cnsTITLE = "テキストファイル読み込み処理" Const cnsFILTER = "全てのファイル (*.*),*.*" Set xlAPP = Application xlAPP.StatusBar = "読み込むファイル名を指定して下さい。" strFILENAME = xlAPP.GetOpenFilename(FileFilter:=cnsFILTER, _ Title:=cnsTITLE) If StrConv(strFILENAME, vbUpperCase) = "FALSE" Then Exit Sub Workbooks.OpenText Filename:=strFILENAME, Origin:=932, _ StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _ ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, Comma:=True _ , Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), _ Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1), _ Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15, 1), Array( _ 16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array(20, 1), Array(21, 1), Array(22, 1), _ Array(23, 1), Array(24, 1), Array(25, 1), Array(26, 1), Array(27, 1), Array(28, 1), Array( _ 29, 1), Array(30, 1), Array(31, 1), Array(32, 1), Array(33, 1), Array(34, 1), Array(35, 1)) _ , TrailingMinusNumbers:=True End Sub

  • 40万行のデータをEXCELで読み込みは?

     ある時間間隔で電圧値をサンプルした約40万行のテキストデータがあるのですが、EXCELでは約6万データしか読み込めないようです。これら全データを読み込む方法はあるのでしょうか。  またはデータ数をはしょって読み込む(マクロを使う?)ことはできるのでしょうか。  データをWORDで読み込み、分割して保存しEXCELに取り込むことはできるのですが、非常に手間です。何か良い方法ご存知の方いらっしゃいましたらお願いします(こちらで聞くべき内容ではないかもしれませんが…)。

  • データを比較したいのですがよい方法がありますでしょうか?

    データを比較したいのですがよい方法がありますでしょうか? DF(フリーソフト)でしてはみたのですがどうもうまくいきません。 エクセルもしくはエディタのマクロ等でできますでしょうか。 下記はサンプルです。実際のデータは5,000件ほどあり、項目もたくさんあります。 差異を見るだけでなく、該当レコードを出力したいのですが。 (昨年) 101,A,B,C,D,E 102,A,B,C,D,F 103,A,B,C,G,E 104,A,H,C,D,E 105,I,B,C,D,E 106,I,B,J,D,E 107,A,K,C,D,E 108,A,B,C,L,E 109,A,B,C,D,M 110,N,B,C,D,E (今年) 101,A,B,C,D,E 102,A,B,C,P,F 103,A,B,C,G,E 104,Q,H,C,D,E 105,I,B,C,D,E 107,A,K,R,D,E 108,A,S,C,L,E 109,A,B,C,D,M 110,N,B,C,D,T 111,U,B,C,D,E ●結果 同じ 101,A,B,C,D,E 103,A,B,C,G,E 105,I,B,C,D,E 109,A,B,C,D,M 昨年にあって今年にないデータ 106,I,B,J,D,E 今年にあって昨年にないデータ 111,U,B,C,D,E 相違データ 102,A,B,C,P,F 104,Q,H,C,D,E 107,A,K,R,D,E 108,A,S,C,L,E 110,N,B,C,D,T

  • EXCELの区切り位置のコマンドについて

    HPから取ってきたデータをEXCELにテキストで貼り付けて、 スペースで区切る処理をするために、データメニューの区切り位置のコマンドで処理しようとしていますが、この区切り位置のコマンドは、1行ごとにしなければならないようですが、100行もあるデータも一回一回、データメニューの区切り位置のコマンドを実行しなければなりませんか? 記録マクロで処理しようと思いましたが、セルを固定してしまうマクロになるのでできませんでした。 よろしくお願いいたします。

  • 住所録のデータを整形

    テキストデータで、電話番号と郵便番号、住所が区切りもなく綺麗にくっついているものがあるのですが、この間にスペースやコンマなどを自動的に入れることが出来るようなソフトなどないでしょうか。 『00-000-0000111-1111東京都』のようなデータなんですが、一つ一つやっていくとなると結構な量がある為、大変な作業になるので、なにか良い方法があれば教えてください。 最終的にはエクセルに取り込んで使おうと思うんですが・・。

  • パワーポイントのマクロでエクセルを操作する方法

    初めて投稿いたします。 最近マクロを勉強し始めたのですが、パワーポイントに埋め込んだエクセルをマクロで動かすことができるでしょうか? やりたい内容としては、 ・パワーポイントに埋め込まれたエクセルデータを開く ・エクセルのデータを編集 ・エクセルを閉じる ・いくつかののページでこれを繰り返す です。 新しいマクロを記録で記録し、マクロを実行するとパワーポイントのテキストなどは変更されるのですが、エクセルデータはもとのままです。 どなたか教えてください。

  • テキストデータをエクセルに変換したい!

    改行されていない連続したテキストデータをエクセルに変換したいのですがどうしたらいいのでしょう? 普通、レコード毎に改行されたテキストデータならば、エクセルから該当のテキストファイルを読み込めば区切ってやればいいと思うのですが、改行されていないため、縦に並ばずにすべてのデータが横に並んでしまっています。 すいません、教えてください。

  • ExcelデータをACCESSへエキスポート

    ExcelデータをADOを使いACCESSへエキスポートしたいのですが、 データ型がちがうというエラーが出てエクスポートできません。 対処法を教えてください。 Excelシートの次のようなデータをAccessへエクスポートしようと しています。 A B C D E F G(列) 1 ID  番号 地域  客先  売上金額 種類 数量 2    K01 東京    a社  100,000    イ  4 3    K02 神奈川  b社  50,000 Excelシートの1行にフィールド名があり、レコードがA2:G3入って いるとします。Accessの売上テーブルにExcelのフィールドと同じ 順番のフィールド名があった時、Excel VBAにてADOを使いAccess にデータを貼り付けようとすると、データ型がちがうとエラー表示 が出てしまいます。A2:A3はAccessの自動発番機能を使うのでいつも 空です。又F3:G3はデータがこの例のように空の場合もあります。 Excel側もAccess側もフィールドのデータ型は同じにしたつもりです が、レコードが空があることがエラーの原因でしょうか。もしそうなら どう対処すればよいのでしょうか。