vbaの場合 データの整形の必要があるか
ケースバイケースと言われてしまいそうですが質問させていただきます。vba初心者で現在簡単なツールを作成しようとしています。(先ほど質問させて頂きました)
以下長くて申し訳ありません。
vbaの解説書などを見ると、
「マクロ記録で手作業で行ってみて、修正や追記していくのが良い」と書かれているのを見かけます。
今回作るツールはcsvからのただの転記なのですが、本来なら3つのファイルに分かれていてもよい要素の異なる3つのデータが、ひとつのcsvファイルとして出力されます。(そのため列数が100を超えます。)
主キーもそれぞれ異なり、
例えば「りんご」のデータだとするとAからはid でデータを取れますが、Bの販売店情報はIDを含んでいません。Cの農家情報は、Aの商品情報に含まれる「管理番号」で紐付けできます。
そしてCの「出荷先ID」でBの情報と紐付けすることができます。
______
このような場合、手作業などで、作業列作って・・・とデータ整えたりしますが、Vbaでもそんなプロセスをしないといけないのでしょうか...?
先ほどの質問では、csvの列が固定できない場合の関数等の質問をさせていただいたのですが、全体の設計を先に考えるべきだと思い直し質問させていただいた次第です。
どうぞよろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
こんばんは
>「マクロ記録で手作業で行ってみて、修正や追記していくのが良い」
それでも作成することは可能ですが、必ずしも効率の良いものにはならない可能性があります。
マクロでできることは、手操作でも可能ではありますが、効率が良いとは限りませんので。
ご質問の内容が抽象的で曖昧なので、よくわかりませんけれど・・・
3種類の表(?)が一つのCSVになっていて、それぞれから検索出来れば解決することのように思われます。
何回「読み替え」が必要かによって、面倒さは変わるかも知れませんが、「セル範囲から検索する関数」みたいなものを作っておけば、後はそれを利用して何度でも検索を繰り返せば済みそうにも思われます。
(簡単な検索なら、わざざざ関数化するまでもないかも知れませんが・・)
>本来なら3つのファイルに分かれていてもよい要素の異なる3つのデータが、
>ひとつのcsvファイルとして出力されます。
どのようになっているのか不明ですが、それぞれを分割できる目印があって、それを解析できるようになっていれば処理は可能と思います。
ただし、あまり良いデータの作成方法とは思えませんけれど・・・
>手作業などで、作業列作って・・・とデータ整えたりしますが、
>Vbaでもそんなプロセスをしないといけないのでしょうか.
作業列を利用する方法も考えられますが、ご質問の内容から想像する限り、作業列は必要なさそうに思われます。
(内容が不明なので、よくわかりませんけれど・・)
マクロの処理の場合は、変数をメモリとして使えるので、作業列や作業セルの代わりに利用することも可能です。
いずれにしろ、目的とする処理を整理して、無駄のないような処理に再構築することが、結果的にわかりやすく効率的なものになりやすいのではないかと思います。
(不合理な条件があれば、それを見直すようなことも考慮したほうが良いのかも知れません)
No.2
- 回答日時:
こんばんは。
もし、csvの出力データが変更できるのでしたら、それを先に行えば、
VBAのツールを作成する必要もありませんね。
紐付けができているのでしたら、csvを1行読み込んでIDを取得。
取り出したIDから、続きのデータを検索。 先ほどのデータと結合。
さらに次のIDを取得し。。。と、VBAで面倒な処理が必要かと。
若しくは、3行毎に1つの商品でしたら、3行毎にまとめるとかでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
値がこの列の整合性制約に違反...
-
Access 外部データ インポー...
-
エクセルのマクロ
-
Perlで、「が」を、「...
-
Excelで外部データをインポート...
-
CSVファイルの重複チェック
-
C#でint型をIntPtr型に変換した...
-
追加クエリ???更新クエリ???
-
キャッシュとバッファの違いは?
-
型 varchar から型 numeric へ...
-
データベースの最適化をマクロ...
-
データベースの2GBって・・・?
-
accessを自宅のパソコンにイン...
-
クエリをキャンセルしたいので...
-
sqlite2とsqlite3の違いについて
-
Developer2000って何?(^^;
-
バッチファイルから直接db2コマ...
-
Access→Oracleデータ参照にはAD...
-
初心者です。Accessを使って、...
-
図書館などの検索用PC
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スタライズとは、どういう意味...
-
キャッシュとバッファの違いは?
-
値がこの列の整合性制約に違反...
-
Access 外部データ インポー...
-
LVMでHDDが壊れた時の対応
-
C#でint型をIntPtr型に変換した...
-
EXCELの最大データ数
-
SQL Server にファイルを登録、...
-
Perlで、「が」を、「...
-
Accessでタブ区切りのテキスト...
-
UNIX時間をEXCEL上で日付・時間...
-
エクセルのマクロ
-
自作Androidアプリのデータ引き...
-
Googleの衛星写真はいつ掲載さ...
-
エクセルから、パワーポイント...
-
ビット数とデータ幅について
-
VBでXMLデータをMS-ACCESS2000...
-
比熱比の計算
-
アクセスカウンターをエクセル...
-
OLE ドラッグアンドドロップの...
おすすめ情報