首页 > 解决方案 > 使用 Excel VBA 从 Excel 中的查询下载的数据中删除重复项

问题描述

我已查询从一个记录了过去 60 天数据的网站下载数据。但是我需要存储过去 240 天的值,之后每当获取新数据时,最旧的数据应该被自动删除。为此,我尝试将 60 天的数据(最初在 A4:A63 中收到)移动到新位置(A184:A243)并首先清除内容 A4:A63....然后在 A4:A63 中收到的下一批数据被移动到位置(A124:A183)并清除内容A4:A63......然后将A4:A63中收到的下一批数据移动到位置A64:A123并清除内容A4:A63。以这种方式存储了 240 天的数据。之后,每当从网站获取新一批数据时,都会存储最新数据并删除最旧的数据,就像先进先出一样。这是我制作的代码

`

Sub ShiftData()
Dim i As Integer
If IsEmpty(Range("A4").Value) = True Then                      '<== To Check new data is present
MsgBox ("No Input to shift")
Else
If Range("A" & 243).Value = "" Then                            '<== Data shifted to last place
Range("A243:A184") = Range("A63:A4").Value
Range("A63:A4").ClearContents
ElseIf Range("A" & 183).Value = "" Then   '<== If last place is occupied data shifted to lastmost empty place
Range("A183:A124") = Range("A63:A4").Value
Range("A63:A4").ClearContents
ElseIf Range("A" & 123).Value = "" Then
Range("A123:A64") = Range("A63:A4").Value '<== If last place is occupied data shifted to lastmost empty place
Range("A63:A4").ClearContents
End If
If Not IsEmpty(Range("A4:A63").Value) = True Then
If Range("A243") <> "" And Range("A183") <> "" _
And Range("A123") <> "" And Range("A63") <> "" Then '<== To check if all places are filled.
Range("A243:A124") = Range("A183:A64").Value       '<== Shifted all data to flush out oldest data
Range("A123:A64") = Range("A63:A4").Value
Range("A4:A63").ClearContents
End If
End If
End If
End Sub`

我在这里面临的问题是,对于来自网站的每个提要,我只获得一到四行新数据,即第 60 天其余的数据(59 天)是相同的。因此,如果我像这样堆叠,我会得到多个重复项,这会在我的分析中产生问题。我只想获取新数据来叠加并忽略重复数据。让我以一次取 3 个新行的示例来解释这一点,以便于理解。在此处输入图像描述

标签: excelvbastackpowerquery

解决方案


推荐阅读