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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
家の中でのこだわりスペースはどこですか?
自分の家で快適に過ごすために工夫しているスペースはありますか? 例)ベランダでお茶を飲むためのカフェテーブル ゲーミングに特化したこだわりのPCスペース
-
【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
2024年は「名探偵コナン30周年」「涼宮ハルヒ20周年」などを迎えますが、 あなたが「もうそんなに!?」と驚いた○○周年を教えてください。
-
メモのコツを教えてください!
メモを取るのが苦手です。 急いでメモすると内容がごちゃごちゃになってしまったり、ひどいときには全く読めない時もあります。
-
【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
【お題】 ・買ったばかりの自転車を分解してひと言
-
あなたの習慣について教えてください!!
あなたが習慣だと思って実践しているものを共有してくださいませんか? 筋肉トレーニングでも朝シャワーでも、あなたが習慣だなと思えば何でも構いません
-
Excelマクロの差分抽出のコードを教えていただきたいです。
Excel(エクセル)
-
Excelマクロ 差分抽出の方法が知りたいです。
Excel(エクセル)
-
VBAでのリスト不一致抽出について
Visual Basic(VBA)
-
-
4
excel VBA 2つのシートの特定の列を比較して同じ値のセルがあったらその行を上書きしたい
Excel(エクセル)
-
5
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
6
Excelで[表1]にあって、[表2]にないものを抽出する関数
その他(Microsoft Office)
-
7
【VBA】異なる行だけを抜き出す数式/マクロについて
Visual Basic(VBA)
-
8
VBA 列全体を別シートの列と比較し、同じ値がある行の、右端に値をコピーする方法について
Excel(エクセル)
-
9
【VBA】2つのシートの値を比較して条件一致したら、同じ行の隣の値を別ブックへ転記したいです。 VB
Visual Basic(VBA)
-
10
worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応
Visual Basic(VBA)
-
11
エクセルVBAでオートフィルター最上行を取得するには
Excel(エクセル)
-
12
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
13
文字列を比較し、相違するフォント色を変える
その他(Microsoft Office)
-
14
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
15
EXCEL VBA 一致しないデータの抽出及びデータ更新
Excel(エクセル)
-
16
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
17
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
-
18
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
19
Excel VBA:セルを新旧1つずつ比較して同分を上書き、差分を蓄積追加
Excel(エクセル)
-
20
特定の文字を含むシートだけマクロ処理をしたい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで隣のセルと同じ内容に列...
-
値の入っているセルのうち、一...
-
【エクセル】区切り位置で分割...
-
ピボットテーブル 0個の行を...
-
Excel関数:「0」を除いた標準...
-
エクセルで何種類のデータがあ...
-
Excel関数で、範囲内の最後のセ...
-
エクセル 8ケタの数字から日数...
-
SUMIFで数値が入力されているセ...
-
エクセル セル内の重複する文...
-
EXCEL 階段状のグラフ
-
離れたエリアでVLookupを使いたい
-
更新前と更新後の差分をVBAを使...
-
エクセル、正数のみの集計[(負...
-
グラフにてX軸、Y軸をそれぞれ...
-
A and B or Cの合計の出し方
-
エクセル 別のファイルにデータ...
-
Excelで、72列のデータがありま...
-
エクセルの最小値抽出方法について
-
複数の候補列から、検索値と一...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで隣のセルと同じ内容に列...
-
Excel関数:「0」を除いた標準...
-
Excel関数で、範囲内の最後のセ...
-
値の入っているセルのうち、一...
-
【エクセル】区切り位置で分割...
-
更新前と更新後の差分をVBAを使...
-
SUMIFで数値が入力されているセ...
-
ピボットテーブル 0個の行を...
-
エクセルに入力された日付「S40...
-
SUMPRODUCT関数 行が増えても...
-
correl関数の範囲指定
-
エクセル 8ケタの数字から日数...
-
【Excel】歯抜けデータの集約
-
エクセル、正数のみの集計[(負...
-
Excelのマクロでソートがうまく...
-
Excelで複数列かつ複数行分の一...
-
エクセルで何種類のデータがあ...
-
エクセルで別のシートに数行お...
-
Excelのマクロで行を間引きたい
-
エクセル2000で〇×の並び替えを...
おすすめ情報
ご回答ありがとうございます。
単純にしたの方向に増えていくだけになっております。
二つのデータには関数式は埋め込んでおりません。
ご回答ありがとうございます。
ド素人過ぎて多少補足頂けますと幸いです。
更新後データ範囲、更新前範囲は、
単純にシート全体を指定したいと思っていたのですが、
どうも書き方がよくわかりませんでした。
IDは抜き出し作業後に当たるため、
現状は秒単位まで出ている日付(D列)くらいしか思いあたりませんでした。
今一度、ご指導をお願い致します。