[[20171211193847]] 『変化するブックからデータを抜いて別のブックに移』(カタツムリ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『変化するブックからデータを抜いて別のブックに移すには』(カタツムリ)

現在社内の別担当から送られてくるエクセルファイルを手打ちで自分達のエクセルファイルに入力していて、それをVBAでできないか考えており、お力を貸していただけたらと思います。
簡単な例で申しますと
1.工事名  1.○○
       2.△△
2.金額   1.100円
       2.200円
3.時期   1.平成29年3月〜平成29年4月
       2.平成29年3月〜平成29年5月
のような案内文章がきて
  工事名   金額    時期
1.○○    100円  平成29年3月〜平成29年4月
2.△△    200円  平成29年3月〜平成29年4月
と入力しています。次の案内文書がくると下に3.4.と追加する形です。
工事名や金額だけでなく必要な項目が沢山あり手打ちでは時間がかかっています。更に条件として
1.工事名  1.○○
       2.△△
       3.××
2.金額   1.100円
       2.200円
       2.300円
3.時期   1.平成29年3月〜平成29年4月
       2.平成29年3月〜平成29年5月
       3.平成29年3月〜平成29年6月
のように工事数が増えたり逆に減ったりする時もあります。また
1.工事名  1.○○
       2.△△
2.金額   1.100円
       2.300円
3.金額変更 2の工事の金額が変更になりました。
4.時期   1.平成29年3月〜平成29年4月
       2.平成29年3月〜平成29年5月
など項目が減ったり増えたりする場合もあります。
ブックからブックへのVBAを使ってのデータの貼り付け方は調べて分かりました。
決まったセルからセルへデータを送るのはテストして可能だったのですが今回の元データが可変となるためどうしてよいのかわからずアドバイスをお願いしたいと思います。

< 使用 Excel:Excel2016、使用 OS:Windows7 >


貴方のコーディング能力が如何ほどか判らないので、どう教えたものか悩みどころですが、汎用的に考え方だけ伝えてみますね。

行位置がデータ量によって可変になってしまう場合、どこか固定文字列がある列を調べて、目的の情報が何行目にあるか調べると良いでしょう。
例えば今回のケースでは、「工事名」「金額」「時期」等の文字列は、同じ列に書かれているのではないでしょうか?

ならば、マクロではデータのある行の先頭から末尾までループし、これらの文字列が何行目にあるか探せば良い訳です。 小技を使い、外部オブジェクトのDictionaryを利用して、文字列をキー、存在行をアイテムとして辞書登録すると、かなり見易いコーディングになりますよ。
(???) 2017/12/12(火) 09:41


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.