求教EXCEL宏制作高手

这样的一个工作表,有16000+行。现在需要筛选出A列的重复项。将B列的日期和C列的数值依次录入到D列,E列……最后将A列中的重复项删除。仅保留唯一值。例要求B,D,F…... 这样的一个工作表,有16000+行。现在需要筛选出A列的重复项。将B列的日期和C列的数值依次录入到D列,E列……最后将A列中的重复项删除。仅保留唯一值。


要求B,D,F……的日期与C,E,F……的数值是对应表1切递增的……
跪求宏高手指教
展开
 我来答
该问答中所提及的号码未经验证,请注意甄别。
TAT萝卜
2013-01-28 · TA获得超过4979个赞
知道大有可为答主
回答量:3084
采纳率:66%
帮助的人:1332万
展开全部
用字典法,效率高,代码见下。
PS:
1、原工作表名为“原数据”
2、对原数据按日期先排序
3、新建一工作表,用于存储新数据,表名“新数据”

宏代码:
Sub newdata()
Dim crr()

set d = CreateObject("scripting.dictionary")
arr = Sheets("原数据").UsedRange.Value

For i = 1 To UBound(arr, 1)
If d.exists(arr(i, 1)) Then
d(arr(i, 1)) = d(arr(i, 1)) & "|" & arr(i, 2) & "|" & arr(i, 3)
Else
d(arr(i, 1)) = arr(i, 1) & "|" & arr(i, 2) & "|" & arr(i, 3)
End If
Next

arr = d.items
ReDim crr(UBound(arr), 0)

For i = 0 To UBound(arr)
brr = Split(arr(i), "|")
ReDim Preserve crr(UBound(arr), Application.WorksheetFunction.Max(UBound(brr), UBound(crr, 2)))

For j = 0 To UBound(brr)
crr(i, j) = brr(j)
Next
Next

Sheets("新数据").[a1].Resize(UBound(crr, 1) + 1, UBound(crr, 2) + 1) = crr

End Sub
AiPPT
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图... 点击进入详情页
本回答由AiPPT提供
mrgeng2008
2013-01-28 · TA获得超过3601个赞
知道大有可为答主
回答量:4034
采纳率:25%
帮助的人:2231万
展开全部
D1=IF(COUNTIF($A$1:$A1,$A1)=1,INDEX($B:$B,SMALL(IF($A:$A=$A1,ROW($A:$A),4^8),COLUMN(B1)/2+1)),"")

E1=IF(COUNTIF($A$1:$A1,$A1)=1,INDEX($C:$C,SMALL(IF($A:$A=$A1,ROW($A:$A),4^8),COLUMN(B1)/2+1)),"")

复制上面公式,分别粘到D1,E1,然后按ctrl shift 回车,一定要三个键一起按不要直接回车

d1,e1输完上面两个数组公式后,同时选中这个个单元格,右拉,下拉即可
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友30cc6ab
2013-01-28 · TA获得超过574个赞
知道小有建树答主
回答量:1336
采纳率:0%
帮助的人:912万
展开全部
导入到Access中,用SQL语句轻松解决,联系我
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友4e1c58699
2013-01-28 · TA获得超过322个赞
知道小有建树答主
回答量:305
采纳率:0%
帮助的人:149万
展开全部
这个问题我包了,联系281987289,给你解决
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式