質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

2回答

1030閲覧

エクセル2010作業環境下でVBAで最終行をうまく更新したい。

e6rlqe

総合スコア10

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

1クリップ

投稿2018/10/08 07:06

編集2022/01/12 10:55

前提・実現したいこと

教えてください。

下記をエクセル2010VBAで行いたいです。

下記写真にも記載しておりますが
毎週全国の支店の契約データの進捗をG列備考で確認、取りまとめます。

前週の備考は、備考のあるデータ行のみコピーペーストして別シートに保存しておき、
翌週分にB列の契約NOを検索値としてVlookupしているのですが、
それだと前週に各支店から報告がなかったりしたら
コメントが消えてしまうので困ってしまいます。

G列の備考部分に更新があったら上書きし、既存のデータを残すVBAありますでしょうか…?
インターネットを探してみましたが検索方法が悪いのかいいサンプルが見当たりませんでした。

発生している問題・エラーメッセージ

エラーメッセージ

前週に報告がなかったものは消えてしまいます。

該当のソースコード

エクセルVBA

イメージ説明

試したこと

VlookupとIndex Matchは試しましたが、
あまりいい結果となりませんでした。

補足情報(FW/ツールのバージョンなど)

エクセル2010

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wwbQzhMkhhgEmhU

2018/10/08 10:33

「前週の備考は、備考のあるデータ行のみコピーペーストして別シートに保存しておき、 翌週分にB列の契約NOを検索値としてVlookupしている」そうですが、Vlookupした結果何をしているのでしょう?
ExcelVBAer

2018/10/09 06:30

素人さんには荷が重いと思いますよ。
guest

回答2

0

まず確認したいこと

今回の話の中では、以下の3シートが登場していると思います。
① 最初に持っているベースとなるシート
② ①から備考のある行だけを抽出したシート
③ のちに名古屋から届いた、名古屋の情報だけが記載されているシート

これらのシートを使い処理されるものと思いますが、処理結果はどのシートに出力される想定でしょうか?
①?③?上記にはない別シート?

①に結果出力する場合(②は使用しません)

①のすべての行を上から順にループし、③からVLookupしていきます。
取得結果がN/Aでも空白でもない場合、備考を上書きしていきます。

③に結果出力する場合(①は使用しません)

③のすべての行を上から順にループします。
この際、まず③に備考が記述されていれば無条件に採用されるものと思いますので、Vlookupは行わず次の行に進みます。
③の備考が空欄となっている行に対しては、②からVLookupを行い、値があれば上書きして穴を埋めていきます。

新規シートに作成する場合

新規シートに③の内容を書き写し、③に結果出力するパターンでできそうです。


いずれにしても、VLookupの検索対象範囲は検索キー(今回の場合は契約NO)でソートされていることが条件になります。
これができていないと対象範囲に存在するのに見つけられず、N/Aが返されるケースが発生してしまいます。

MATCHとINDEXを使用した検索はVLookupに比べて記述が複雑で敷居が高くなりますが、この「事前にソートしておかなければならない」という制約なしで同様の検索が行えます。

投稿2018/10/10 03:03

編集2018/10/10 07:33
jawa

総合スコア3013

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

1)手元にあるデータと各支店からのデータで比較するのは、G列(備考)だけで良いのですか。
他の列(E,F等)は、比較する必要はないのでしょうか。

2)もし、VBAで行う場合、シート名、レイアウト、更新基準などを決めておいた方が良いかと。
シート名:マスター・・・取りまとめ用のシート
シート名:更新データ・・・名古屋支店等からもらうデータ
(このシートが1つで良いか、複数必要かは不明)
もし、複数のシートが必要なら、以下の様なシートの配置にする。
左側から
支店Aデータ、支店Bデータ、・・・、マスター
のように配置する。シート名は、任意だが、マスターの左側にあるシートが集計対象となる。

3)レイアウト
1行目は見出し行とする。
2行目以降がデータ行とする。
各列のデータの内訳は、あなたが提示した通りとする。
マスターと各支店からのデータは、同じレイアウトとする。

4)更新基準
契約Nをキーとして、処理を行う。
各支店の契約Noがマスターになければ、そのデータを1行まるごと、マスターに追加する。
各支店の契約Noがマスターにあれば、各支店のG列のデータでマスターのG列を更新する。
(G列が同じ内容ならマスターの更新はしない)
更新するのはG列のみであり、他の列は、内容が異なっていても更新しない。
追加した場合は、G列をうす緑にする。
更新した場合は、G列を黄色にする。

上記の仕様でよければ、マクロ提供は可能です。
添付図のH列は説明の為であり、この列にデータは存在しません。
マスターのレイアウト

投稿2018/10/08 13:48

tatsu99

総合スコア5424

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問