
No.4ベストアンサー
- 回答日時:
1.以下のマクロを標準モジュールに登録してください。
2.各シートのシート名は
更新前データ
更新後データ
差分データ
としています。
3.差分データの見出し行(1行目)は予め、作成しておいてください。
Option Explicit
Public Sub 差分データ作成()
Dim wsb As Worksheet '更新前データシート
Dim wsa As Worksheet '更新後データシート
Dim wsd As Worksheet '差分データシート
Dim maxrowb As Long '更新前データ 最大行
Dim maxrowa As Long '更新後データ 最大行
Dim maxrowd As Long '差分データ 最大行
Dim rowa As Long '更新後データ 行
Dim rowd As Long '差分データ 行
Set wsb = Worksheets("更新前データ")
Set wsa = Worksheets("更新後データ")
Set wsd = Worksheets("差分データ")
maxrowb = wsb.Cells(Rows.count, 1).End(xlUp).row
maxrowa = wsa.Cells(Rows.count, 1).End(xlUp).row
maxrowd = wsd.Cells(Rows.count, 1).End(xlUp).row
If maxrowb >= maxrowa Then
MsgBox ("更新データなし")
Exit Sub
End If
rowd = maxrowd + 1
For rowa = maxrowb + 1 To maxrowa
wsd.Cells(rowd, 1).Resize(1, 23).Value = wsa.Cells(rowa, 1).Resize(1, 23).Value
rowd = rowd + 1
Next
MsgBox ("完了")
End Sub
ご指導頂きまして、大変ありがとうございます。
他の方の指導もございましたが、
希望通りの仕様になっておりまして、
今後のやりたいことにもつながるため、
ベストアンサーにさせて頂きました。
No.5
- 回答日時:
No1です。
>更新後データ範囲、更新前範囲は、
>単純にシート全体を指定したいと思っていたのですが、
それでも不可能ではありませんけれど、実際にデータのある範囲は、シート全体に対して何万分の一とかの範囲だと想像します。(数十万分の一かも・・)
それを、シート全体で計算させると、数万倍(数十万倍)の計算をさせることになるので、効率が悪すぎますし、計算が重くなる原因になりかねません。
可能性のある範囲に限定しておくのが常識的です。
>IDは抜き出し作業後に当たるため、
>現状は秒単位まで出ている日付(D列)くらいしか思いあたりませんでした。
抽出する際に、どこかの列の値で追加データかどうかを判断できないということでしょうか?
ひょっとして、1行分のデータを全部比較して同じかどうかを判断する必要があるということでしょうか?
大抵の場合はどこかの列をの値を代表として(=ID代わり)比較して、更新前に存在したかどうかを判断できるものと想像しますけれど・・・?
(そのように利用できる列を、「IDにできる列」と表現しました)
添付図が判読できないのでわからないのですが、B列やC列のタイトルに「コード」の文字があるようですが、これって行に対してのID代わりにならない値ってことでしょうか?
>現状は秒単位まで出ている日付(D列)くらいしか思いあたりませんでした。
D列の値が使えるのならそれでもかまいませんが、「重複がない」ことと「更新前後で同じデータの日付は完全一致する」という条件を満たしていないとID代わりには利用できません。
ご質問文ではシート名もよくわからないので、No1のように抽象的な表現をするしかないのですけれど、無理矢理式っぽくしてみるのなら
それぞれが、別シートであるものとして、
=FILTER(更新後データ!A2:W5000,COUNTIF(更新前データ!D2:D5000,更新後データ!D2:D5000)=0,"")
みたいな感じになるはずです。
細かく指導して頂きましてありがとうございます。
とても勉強になりました。
大変心ぐるしいですが、
個人的にtatsumaru77様のご回答の方が、
今後のやりたいことにもつながるため、
そちらをベストアンサーにさせて頂きました。
ご指導頂きましてありがとうございます。
No.3
- 回答日時:
No2です。
行が増える場合、添付図のように増えるケースもあるのでしょうか。
このような増え方もありえる場合は、緑の行が増えたことになるので、
2,5行を差分データにコピーすることになります。
又、更新前データ、更新後データには関数式が埋め込まれていますか?

No.2
- 回答日時:
>単純に増えた分を抜き出したいと考えております。
添付図のように
単純に行が増えるだけなのでしょうか。
そうであれば、5,6行が増えた行なので、その行を差分データにコピーします。(5,6行の内容はチェックしません)

No.1
- 回答日時:
こんにちは
画像がほとんど識別できないので、以下は勝手な推測での回答です。
お門違いの場合はスルーしてください。
どこかに個別のIDにできるものがあるとして、
「更新データに存在するIDで更新前に存在しない行を抜き出す」
ということをなさりたいのかと推測しました。
>office365のエクセルを使用しております
とのことですので、抽出自体は関数でも可能です。
抽出結果を表示したい左上のセルに
=FILTER(更新後データ範囲,COUNTIF(更新前ID列範囲,更新後ID列範囲)=0)
の式を入力すれば、そのまま上記の内容がスピルされます。
VBAでなさりたいのであれば、抽出範囲の左上のセルに、上記の式を代入すれば同じものが得られるはずと思います。
セルから関数を外したければ、
結果のセル範囲.Value = 結果のセル範囲.Value
とすることで、固定値にすることができます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- Excel(エクセル) Excelマクロの差分抽出のコードを教えていただきたいです。 2 2023/03/14 11:40
- Excel(エクセル) Excelでのデータ管理 6 2022/12/24 09:33
- Excel(エクセル) VBAで同フォルダ内の別ブックを開かず参照して条件の一致する行の指定セルを抽出するには? 1 2022/07/21 19:29
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- その他(ソフトウェア) 現在と過去の顧客名簿、新規・解約・更新など作りたいのですが「やよいの顧客管理」なら簡単に扱えますか? 1 2022/05/18 10:44
- Visual Basic(VBA) vbaについて 主に以下のような設定をしたいです。 Aブックの表の行数が20未満だったら Bブックの 1 2023/06/08 23:40
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Excel(エクセル) ネットワーク上のエクセルとリンクしている時にデータ更新をvbaで、refresh Allで行う場合の 2 2023/04/10 05:39
- Visual Basic(VBA) 【困っています2】VBA 追加処理の記述を教えてください。 2 2022/08/26 11:42
このQ&Aを見た人はこんなQ&Aも見ています
-
Excelマクロの差分抽出のコードを教えていただきたいです。
Excel(エクセル)
-
excel VBA 2つのシートの特定の列を比較して同じ値のセルがあったらその行を上書きしたい
Excel(エクセル)
-
VBAでのリスト不一致抽出について
Visual Basic(VBA)
-
-
4
【VBA】異なる行だけを抜き出す数式/マクロについて
Visual Basic(VBA)
-
5
VBAでセル同士を比較して色付け
Visual Basic(VBA)
-
6
Excelマクロ 差分抽出の方法が知りたいです。
Excel(エクセル)
-
7
【ExcelVBA】5万行以上のデータ比較の効率的な処理方法について
Visual Basic(VBA)
-
8
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
9
Excelで[表1]にあって、[表2]にないものを抽出する関数
その他(Microsoft Office)
-
10
Excel VBA:セルを新旧1つずつ比較して同分を上書き、差分を蓄積追加
Excel(エクセル)
-
11
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
12
EXCEL VBA 一致しないデータの抽出及びデータ更新
Excel(エクセル)
-
13
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
14
文字列を比較し、相違するフォント色を変える
その他(Microsoft Office)
-
15
【VBA】2つのシートの値を比較して条件一致したら、同じ行の隣の値を別ブックへ転記したいです。 VB
Visual Basic(VBA)
-
16
エクセルでマクロにてセル色と文字を他シートのセルへコピーしたい
その他(コンピューター・テクノロジー)
-
17
VBA 列全体を別シートの列と比較し、同じ値がある行の、右端に値をコピーする方法について
Excel(エクセル)
-
18
Rangeメソッドは失敗しました。globalオブジェクトについて
Excel(エクセル)
-
19
vba クリップボードクリアについて教えてください
その他(プログラミング・Web制作)
-
20
エクセルVBAで 2種のリストを比べて重複していないデータを最下行に追加するには
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで隣のセルと同じ内容に列...
-
ピボットで複数の区切りでグル...
-
EXCELデータのCSV変換の限界
-
エクセルの並べ替え
-
Excel関数:「0」を除いた標準...
-
Excelで複数列かつ複数行分の一...
-
エクセル 正解率
-
SUMIFで数値が入力されているセ...
-
エクセル、正数のみの集計[(負...
-
エクセルVBA AdvancedFilterの...
-
ピボットテーブル 0個の行を...
-
VLOOKUP関数で検索範囲を2つの...
-
エクセル関数countifの初歩的な...
-
エクセルでデータ照合の仕方
-
【エクセル】区切り位置で分割...
-
エクセルのSUMPRODUCT関数につ...
-
エクセル2000で〇×の並び替えを...
-
「JANコード」と「日付」で販売...
-
【Excel】歯抜けデータの集約
-
SUMIF関数でエラーが出ます
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで隣のセルと同じ内容に列...
-
【エクセル】区切り位置で分割...
-
更新前と更新後の差分をVBAを使...
-
Excel関数:「0」を除いた標準...
-
SUMIFで数値が入力されているセ...
-
値の入っているセルのうち、一...
-
Excel関数で、範囲内の最後のセ...
-
ピボットテーブル 0個の行を...
-
エクセル、正数のみの集計[(負...
-
エクセルに入力された日付「S40...
-
入力するとかってにセルの色が...
-
《エクセル2000》重複している...
-
エクセル 8ケタの数字から日数...
-
エクセルで何種類のデータがあ...
-
SUMPRODUCT関数 行が増えても...
-
Excelのマクロで行を間引きたい
-
複数の候補列から、検索値と一...
-
エクセルVBAを使ってセルに日付...
-
エクセルで電話番号を - で分...
-
Excelで複数列かつ複数行分の一...
おすすめ情報
ご回答ありがとうございます。
単純にしたの方向に増えていくだけになっております。
二つのデータには関数式は埋め込んでおりません。
ご回答ありがとうございます。
ド素人過ぎて多少補足頂けますと幸いです。
更新後データ範囲、更新前範囲は、
単純にシート全体を指定したいと思っていたのですが、
どうも書き方がよくわかりませんでした。
IDは抜き出し作業後に当たるため、
現状は秒単位まで出ている日付(D列)くらいしか思いあたりませんでした。
今一度、ご指導をお願い致します。