Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Excel 2013)
データ抽出
投稿日時: 19/09/19 20:50:55
投稿者: TOM57

下記のようにカンマ区切りのテキストデータを、Aの3列目のデータ
Bの1列目のデータ、Cの2列目のデータを矢印下のデータのように
するにはどのような手順でVBAを書けば、早く処理できるでしょうか。
 
ID:01
A:0,1,2,3,4,5,6
B:10,9,8,7
C:5,6,7,8
ID:02
A:7,8,9,10
C:1,2,3
 
↓↓↓
 
ID    A3    B1    C2
01    2    10    6
02    9        2
 
よろしくお願いいたします。

回答
投稿日時: 19/09/19 21:31:26
投稿者: WinArrow
投稿者のウェブサイトに移動

説明不足
 
転記論理を日本語で説明しましょう
 
それから、コードの作成依頼は、禁止されています。

回答
投稿日時: 19/09/19 21:50:26
投稿者: simple

そのデータはサンプルだと思いますが、二点確認です。
(1)テキストファイルが"ID"で始まるとSYLKファイルという特定のファイルと見なされます。
本当に"ID"で始まりますか?
(2)CSVファイルであれば普通は、

ID,01
A,0,1,2,3,4,5,6
B,10,9,8,7
C,5,6,7,8
ID,02
A,7,8,9,10
C,1,2,3
などとするはずです。
つまり、提示の形式だと、「A:0」で2つの情報がひとつのデータとなってしまうので、
さらにそれを分離する手間がかかります。
こうしたことは通常は避けるはずなんです。
またIDは文字列として認識するようになんらかの手立てをするはずなんです。
 
ひょっとして上記の提示形式は説明用に、形式に手を加えていませんか?
説明用ではなく、実際の形式のサンプルデータを提示して下さい。
そのうえで議論されたらいかがでしょうか。

投稿日時: 19/09/19 22:08:18
投稿者: TOM57

WinArrowさん、説明不足で申し訳ありません。
私にとって説明の仕方が難しく、あのような形にしてしまいました。
コード作成依頼したつもりではなく、どのような順で処理したら早く処理
できるかお聞きするつもりでした。
すみません。
 
simpleさん
すみません。自分で説明しやすいようにデータを加工してしまっています。
データはIDでは始まりませんが実際のデータは「:」で表記されています。
質問の仕方が悪く申し訳ありません。

回答
投稿日時: 19/09/19 23:05:10
投稿者: simple

>自分で説明しやすいようにデータを加工してしまっています。
データの内容(数値)とかはもちろん加工して全く問題ないです。
論点は形式、フォーマットです。
 
> データはIDでは始まりませんが実際のデータは「:」で表記されています。
数値は架空でよいのですが、実際の形式のデータを提示されるとよいのでは?
 
私だったら、テキストフィルを一行ごとに読み込んで処理しますね。
行指向の処理はテキスト処理の基本でもありますから。
Splitなどを使って値をとりだして、動的配列に結果を書き込んでいって、
最後にシートに書き出したらよいのでは?
 
「速く」ではなく、「早く」ということなら、ご自分でトライした結果をアップして
皆さんの意見を聞くというのが良いのでは?

投稿日時: 19/09/19 23:38:09
投稿者: TOM57

simpleさん
 
ありがとうございます。
VBAを使っている割には偏った使い方をしてしまっているので
処理速度が遅くなってしまうことが多く…。
 
動的配列使いこなせてないので、再度勉強します。
本当にありがとうございました。