プロが教える店舗&オフィスのセキュリティ対策術

Excelの表で、A列B列が昨日のデータ。C列D列が本日のデータ。
ここから、本日分のデータで新規出現したデータのみをE列F列に抜き出したいです。
(色がついていますが、実際のデータに色はありません。)

データは多いときで、毎日500件程になります。
どうぞよろしくお願いいたします。

「VBAで、新しい値のみを抜き出す方法教え」の質問画像

A 回答 (4件)

もし、C6=3、D6=お のデータがあった場合も、新規出現として扱って良いのでしょうか。

    • good
    • 1
この回答へのお礼

返答遅くなり申し訳ございません。
A列C列のみの判定で、付随するB列D列のデータは必ず同じデータが入ります。説明が少なくて申し訳ありません。

お礼日時:2021/03/17 10:55

通常は1行目は見出し行になりますが、今回は1行目からデータが始まっているということで良いのですね。

    • good
    • 1
この回答へのお礼

1件目からデータが始まります。
説明が少なくて申し訳ございません。

お礼日時:2021/03/17 10:56

それで翌日はどのような作業を行なうのでしょうか?


C・D列をA・B列に上書きしたのちにC・D列の値をクリアして『本日分』としてデータを入力ですか?(コピペなのかはわかりませんが、その辺が明確だと楽ですかね)

書き出すタイミングは入力であればリアルタイム?
コピペであればその後に実行?
    • good
    • 1
この回答へのお礼

返答遅くなり申し訳ございません。
本社から毎日データがExcelで送られてくるものを、自分で作業用Excelを作成して新規データのみを抜き出す作業をしています。今は手作業です。
そのため、おっしゅる通りにC・D列をA・B列に上書きしたのちにC・D列の値をクリアして『本日分』としてデータを入力します。
その後、抜き出したデータを印刷して作業員に渡します。
書き出すタイミングは毎朝コピペして実行しています。
説明が少なくて申し訳ございません。

お礼日時:2021/03/17 11:02

こんばんは


>新規出現したデータのみをE列F列に抜き出したいです。
表組みを参考にするとこんな感じですかね
トリガーやデータ更新は考えてください。
Sub Sample()
Dim old_dataAry()
Dim tmpAry, Result
Dim lastRow As Long, i As Long, n As Long
n = 1
For i = 1 To 4
If lastRow <= Cells(Rows.Count, i).End(xlUp).Row Then
lastRow = Cells(Rows.Count, i).End(xlUp).Row
End If
Next
tmpAry = Range("A1:D" & lastRow)
ReDim old_dataAry(UBound(tmpAry, 1))
For i = 1 To UBound(tmpAry, 1)
old_dataAry(i) = tmpAry(i, 1) & tmpAry(i, 2)
Next
For i = 1 To UBound(old_dataAry)
Result = Filter(old_dataAry, tmpAry(i, 3) & tmpAry(i, 4))
If Not UBound(Result) <> -1 Then
Cells(n, "E").Value = tmpAry(i, 3)
Cells(n, "F").Value = tmpAry(i, 4)
n = n + 1
End If
Next
End Sub

500行程度なら処理時間の問題はさほどないと思いますが、
Cells(n, "E").Value = tmpAry(i, 3)
Cells(n, "F").Value = tmpAry(i, 4)
を工夫して一度に書き出せば、短縮できると思います。
    • good
    • 3
この回答へのお礼

返答遅くなり申し訳ございません。
この通りにマクロ作成しましたら、データが作成されました!
本当に助かりました。ありがとうございます!!

お礼日時:2021/03/17 11:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!