
エクセルのマクロで検索・抽出したデータを修正及び更新して元データに反映させたい。
Sheet1に元データが行単位で入力されています。。
A B C D E F
1 日付顧客名契約料担当回収日回収金額
2
3
|
50
Sheet2で複数条件でフィルタオプションをマクロで実行し結果を表示ています。
A B C D E
1 日付~ 日付マデ 顧客名 担当者
2 1/1 2/28 高橋 --------->検索条件
3
4 日付顧客名担当回収日回収金額
5 -------------------------------------->抽出結果
6 -------------------------------------->抽出結果
7 -------------------------------------->抽出結果
マクロは下記の通りです。
Public Sub 検索()
Dim myRow1 As Long, myRow2 As Long
'----Sheet1とSheet2のA列で最終行を捜します。
myRow1 = Sheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row
myRow2 = Sheets("Sheet2").Range("A" & Rows.Count).End(xlUp).Row
'----Sheet2のA5以下が入力されていたらクリアします。
If myRow2 >= 5 Then
Sheets("Sheet2").Range("A5:P" & myRow2).ClearContents
End If
'----フィルタオプションの設定で抽出します。
'----元データはSheet1、抽出条件はSheet2のA1:D2、抽出先はSheet2のA4:E4です。
Sheets("Sheet1").Range("A1:F" & myRow1).AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=Sheets("Sheet2").Range("A1:D2"), _
CopyToRange:=Sheets("Sheet2").Range("A4:E4"), _
Unique:=False
End Sub
抽出結果の各セルデータを必要に応じて変更・修正(選出結果を直に)をしそれを元データ
に反映(上書き?)させるようなマクロを作成したいです。
どなたかご指導よろしくお願いいたします。
うまく説明できないので画像を添付します。

No.2ベストアンサー
- 回答日時:
質問者のレベルではChangeイベントはちょと難しいかも。
。(^^;;;で、Sheet2に抽出後、修正データを入れ、
それが正しいかどうか確認した後に、Sheet1へ転記する方がいいかも。
'------------------------------------------------
Sub 更新()
Dim R1 As Long
Dim R2 As Long
For R2 = 5 To Sheets("Sheet2").Cells(Rows.Count, "A").End(xlUp).Row
For R1 = 2 To Sheets("Sheet1").Cells(Rows.Count, "A").End(xlUp).Row
If Sheets("Sheet1").Cells(R1, "A") = Sheets("Sheet2").Cells(R2, "A") And _
Sheets("Sheet1").Cells(R1, "B") = Sheets("Sheet2").Cells(R2, "B") And _
Sheets("Sheet1").Cells(R1, "D") = Sheets("Sheet2").Cells(R2, "C") Then
Sheets("Sheet1").Cells(R1, "E") = Sheets("Sheet2").Cells(R2, "D")
Sheets("Sheet1").Cells(R1, "F") = Sheets("Sheet2").Cells(R2, "E")
Exit For
End If
Next R1
Next R2
End Sub
'-------------------------------------------
一行のコードが長くなるのでRangeのValueプロパティは省いてあります。
それから処理の流れには関係ないことですが、
シートを扱うために変数を使うとコードが短くすっきりなります。
Dim WS1 As Worksheets
Set WS1 = Worksheets("Sheet1")
最初でこのようしておくと、
以後、Worksheets("Sheet1")の代わりにWS1を使えるということです。
以上です。
No.1
- 回答日時:
シート2の検索結果を表示させる際に元の表の何行目かを同時に表示させるようにします。
シート2で変更した場合にはPrivate Sub Worksheet_Change(ByVal Target As Range) で変更されたデータのある行での元の表の行を求めて元の表のデータを変更するようにすればよいでしょう。
この回答への補足
ご回答ありがとうございます。
なにぶん初心者なので・・・
具体的に検索表示と更新するためのマクロを教えていただけないでしょうか?
よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Sheet「状況」から、分類の年齢別カウント数をSheet「D表」へ転記する下記マクロを作っています 7 2022/12/14 17:57
- Visual Basic(VBA) Sheet2の日付をキーにオートフィルターで2023年1月のデータを抽出し、Sheet3へ書き出すた 2 2023/03/06 23:57
- Visual Basic(VBA) vbaのvlookup関数エラー原因を教えていただけないでしょうか。 3 2022/04/25 16:16
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) ExcelVBAでDo Until loopのネスト、IF文を使って一致する物と一致しない物としたい 11 2022/12/24 17:46
- Visual Basic(VBA) Sheet3から2つの条件でオートフィルターで抽出した個数をSheet2へ入力するマクロで、一つ目の 4 2023/01/12 23:40
- Excel(エクセル) ExcelVBAについて。 2 2022/12/10 20:08
- Visual Basic(VBA) Sheet2からオートフィルターで売上日を抽出した件数をカウントし、その件数をSheet1のセルB1 2 2023/01/12 12:24
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) excelVBAについて。 8 2022/12/11 13:47
このQ&Aを見た人はこんなQ&Aも見ています
-
抽出したデータを修正して元のセルに上書きしたい
Access(アクセス)
-
VBAについて質問。別シートに転記、再度修正すると上書き保存するVBAを作成する方法を知りたいです。
Visual Basic(VBA)
-
ユーザーフォームに別シートからデータを反映させたい。
Visual Basic(VBA)
-
-
4
エクセルVBA ユーザーフォームのTextBoxを日付にしたい
Excel(エクセル)
-
5
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
6
VBAで検索後、行番号取得し上書き保存
Excel(エクセル)
-
7
VBAを使って検索したセルをコピーして別の場所に貼り付ける。
Visual Basic(VBA)
-
8
エクセルVBAリストボックスに表示された検索結果をクリックして、該当するセルをアクティブセルにしたい
Excel(エクセル)
-
9
ExcelVBAのユーザーフォームで一度保存したデータを同じフォームに呼び出して編集する方法
Visual Basic(VBA)
-
10
excel VBA 2つのシートの特定の列を比較して同じ値のセルがあったらその行を上書きしたい
Excel(エクセル)
-
11
エクセルVBAで、条件に一致するセルへ移動
Excel(エクセル)
-
12
特定セルの内容を更新したら、その更新日を自動的に表示する方法について
Excel(エクセル)
-
13
Excelでマクロ設定したが反映されない(初心者です)
Excel(エクセル)
-
14
初歩的な事だと思います。 Sub または Function が定義されていません。
Visual Basic(VBA)
-
15
VBA フォームに入力された数値を検索条件としたい
Visual Basic(VBA)
-
16
excelのマクロで該当処理できなければ飛ばして進むにはどうすればよいのでしょうか
Visual Basic(VBA)
-
17
エクセルで縦に並んだデータをある項目毎に横に並び替えたい
Excel(エクセル)
-
18
マクロの「Rangeメソッドは失敗しました’Globalオブジェクト」エラーの解決方法について
Excel(エクセル)
-
19
EXCELVBA リストボックスで選択項目を全部表示したい
Visual Basic(VBA)
-
20
エクセルVBA「リストボックスで選択した値をテキストボックスで変更してシート上セルに反映したい」
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESS クエリの抽出条件に他の...
-
ACCESSのクエリで抽出条件「ま...
-
ACCESS 「パラメータの入力」...
-
PCゲームから音声ファイルを抽...
-
accessの日付フィールドから前...
-
access 文字列で範囲指定する
-
Accessについて
-
エクセル2010の統計作業(フィ...
-
AccessでWhere条件とは
-
Access テーブルを分割してエク...
-
曜日別にリストを抽出する方法
-
Accessで「式で型が一致しません...
-
元データから連続5日以上だった...
-
ACCESSの時間帯の抽出について
-
オプションボタンを使って抽出
-
ACCESS クエリで”1”でないもの...
-
ExcelのVBAで、XMLファイルのデ...
-
エクセルのマクロで検索・抽出...
-
Accessでクエリの抽出条件がう...
-
差込印刷での全角表示について...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESS クエリの抽出条件に他の...
-
ACCESSのクエリで抽出条件「ま...
-
Access テーブルを分割してエク...
-
ACCESS 「パラメータの入力」...
-
accessの日付フィールドから前...
-
Accessで「式で型が一致しません...
-
ACCESSの時間帯の抽出について
-
エクセルのマクロで検索・抽出...
-
アクセス・クエリの抽出条件(...
-
PCゲームから音声ファイルを抽...
-
ACCESS クエリの抽出条件を動的...
-
ACCESS クエリで”1”でないもの...
-
元データから連続5日以上だった...
-
クエリの進行状況を知りたい。
-
Accessクエリーでチェックボッ...
-
access クエリの抽出条件を入れ...
-
アクセスでの抽出方法(日付+時...
-
アクセス2000で、DBの0と空白以...
-
Accessで任意のテーブルのフィ...
-
access 文字列で範囲指定する
おすすめ情報