電子書籍の厳選無料作品が豊富!

vbaの場合 データの整形の必要があるか
ケースバイケースと言われてしまいそうですが質問させていただきます。vba初心者で現在簡単なツールを作成しようとしています。(先ほど質問させて頂きました)

以下長くて申し訳ありません。

vbaの解説書などを見ると、
「マクロ記録で手作業で行ってみて、修正や追記していくのが良い」と書かれているのを見かけます。

今回作るツールはcsvからのただの転記なのですが、本来なら3つのファイルに分かれていてもよい要素の異なる3つのデータが、ひとつのcsvファイルとして出力されます。(そのため列数が100を超えます。)
主キーもそれぞれ異なり、

例えば「りんご」のデータだとするとAからはid でデータを取れますが、Bの販売店情報はIDを含んでいません。Cの農家情報は、Aの商品情報に含まれる「管理番号」で紐付けできます。

そしてCの「出荷先ID」でBの情報と紐付けすることができます。

______

このような場合、手作業などで、作業列作って・・・とデータ整えたりしますが、Vbaでもそんなプロセスをしないといけないのでしょうか...?



先ほどの質問では、csvの列が固定できない場合の関数等の質問をさせていただいたのですが、全体の設計を先に考えるべきだと思い直し質問させていただいた次第です。

どうぞよろしくお願いいたします。

A 回答 (3件)

こんばんは



>「マクロ記録で手作業で行ってみて、修正や追記していくのが良い」
それでも作成することは可能ですが、必ずしも効率の良いものにはならない可能性があります。
マクロでできることは、手操作でも可能ではありますが、効率が良いとは限りませんので。

ご質問の内容が抽象的で曖昧なので、よくわかりませんけれど・・・
3種類の表(?)が一つのCSVになっていて、それぞれから検索出来れば解決することのように思われます。
何回「読み替え」が必要かによって、面倒さは変わるかも知れませんが、「セル範囲から検索する関数」みたいなものを作っておけば、後はそれを利用して何度でも検索を繰り返せば済みそうにも思われます。
(簡単な検索なら、わざざざ関数化するまでもないかも知れませんが・・)

>本来なら3つのファイルに分かれていてもよい要素の異なる3つのデータが、
>ひとつのcsvファイルとして出力されます。
どのようになっているのか不明ですが、それぞれを分割できる目印があって、それを解析できるようになっていれば処理は可能と思います。
ただし、あまり良いデータの作成方法とは思えませんけれど・・・

>手作業などで、作業列作って・・・とデータ整えたりしますが、
>Vbaでもそんなプロセスをしないといけないのでしょうか.
作業列を利用する方法も考えられますが、ご質問の内容から想像する限り、作業列は必要なさそうに思われます。
(内容が不明なので、よくわかりませんけれど・・)
マクロの処理の場合は、変数をメモリとして使えるので、作業列や作業セルの代わりに利用することも可能です。

いずれにしろ、目的とする処理を整理して、無駄のないような処理に再構築することが、結果的にわかりやすく効率的なものになりやすいのではないかと思います。
(不合理な条件があれば、それを見直すようなことも考慮したほうが良いのかも知れません)
    • good
    • 0

こんばんは。



もし、csvの出力データが変更できるのでしたら、それを先に行えば、
VBAのツールを作成する必要もありませんね。

紐付けができているのでしたら、csvを1行読み込んでIDを取得。
取り出したIDから、続きのデータを検索。 先ほどのデータと結合。
さらに次のIDを取得し。。。と、VBAで面倒な処理が必要かと。

若しくは、3行毎に1つの商品でしたら、3行毎にまとめるとかでしょうか?
    • good
    • 0
この回答へのお礼

ありがとうございます。他のエクセルファイルからもデータを取得する必要がありツールを作成します。

お礼日時:2022/03/07 19:23

必要なら作業列は作りますよ。


定型ならそれも自動化しますよ。
    • good
    • 0
この回答へのお礼

ありがとう

ありがとうございます!ケースバイケースということですね。わざわざひとの目で見てわかりやすい形の整える意味がない気がしてしまって、質問させていただきました。

お礼日時:2022/03/07 19:14

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