excel vba代码要怎么写

如图,我想编写一段VBA代码,让它能筛选掉进货次数相同的一行,只留下首次的记录结果如下:2010-11-100:0012010-11-100:2022010-11-101... 如图,我想编写一段VBA代码,让它能筛选掉进货次数相同的一行,只留下首次的记录结果如下:
2010-11-10 0:00 1
2010-11-10 0:20 2
2010-11-10 1:00 3
2010-11-10 2:00 4
2010-11-10 2:20 5
谢谢!
展开
 我来答
鱼木混猪哟
高粉答主

2015-11-13 · 专注Office,尤其Excel和VBA
鱼木混猪哟
采纳数:6078 获赞数:33694

向TA提问 私信TA
展开全部

用如何代码可实现,假设原数据在A、B列

Sub main()

Set dic = CreateObject("scripting.dictionary")

arr = Range("A1").CurrentRegion

For i = 1 To UBound(arr)

If dic.exists(arr(i, 2)) = False Then

dic(arr(i, 2)) = arr(i, 1)

Else

If dic(arr(i, 2)) < arr(i, 1) Then

dic.Remove arr(i, 2)

dic(arr(i, 2)) = arr(i, 1)

End If

End If

Next i

[E1].Resize(dic.Count, 1) = Application.Transpose(dic.keys)

[D1].Resize(dic.Count, 1) = Application.Transpose(dic.items)

End Sub


详细步骤如下:

  1. 原数据

  2. Alt+F11,选择sheet1,复制上述代码

  3. 关闭返回工作表,alt+F8,掉出宏界面

  4. 点击执行,即得到想要的结果:

戴雯君Rd
2020-05-21
知道答主
回答量:6
采纳率:0%
帮助的人:3470
展开全部
假设时间在a列,进货次数在b列,时间和1号仓位进货次数分别在a1和b1单元格。
那么你可以这么写:
sub quchong()
Range("a1:b10").CurrentRegion.RemoveDuplicates Columns:=2, Header:=xlYes
end sub
对a1到b10的单元格进行去重复项,其中Columns:=2就是按照b列为基准去重复项
2表示你计算区域的第二列。Header:=xlYes就是留表头,也可以理解为第一行不参与计算。
如果不留表头就写xlNo
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pmwxda
2010-12-10 · TA获得超过814个赞
知道小有建树答主
回答量:751
采纳率:0%
帮助的人:643万
展开全部
好了写完了。注,原数列必须要A列,代码加入后,在excel中双击就可以了。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
i = 1
newi = 1
newj = 1
Do While (IsNumeric(ActiveSheet.Cells(i, 1))) And (CStr(ActiveSheet.Cells(i, 1)) <> "")
If CInt((i - 1) / 9) = (i - 1) / 9 Then
ActiveSheet.Cells(newi, newj) = ActiveSheet.Cells(i, 1)
newi = newi + 1
Else
ActiveSheet.Cells(newi, newj) = ActiveSheet.Cells(i, 1)
If newj < 4 Then
newj = newj + 1
Else
newj = 1
newi = newi + 1
End If
End If
i = i + 1
Loop

For x = newi To i
ActiveSheet.Cells(x, 1) = ""
Next
End Sub
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xuanxuan163com
2010-12-09 · TA获得超过2769个赞
知道大有可为答主
回答量:1709
采纳率:75%
帮助的人:1601万
展开全部
Sub a()
'假如A列是时间,B列是进货次数
Dim i As Long
For i = 2 To 65536
If Cells(i, 2) = "" Then Exit For
If Cells(i, 2) = Cells(i - 1, 2) Then
Rows(i).Delete Shift:=xlShiftUp
i = i - 1
End If
Next i
End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
快乐_无敌
2010-12-09 · TA获得超过652个赞
知道小有建树答主
回答量:604
采纳率:0%
帮助的人:515万
展开全部
数据--筛选--高级筛选
选中 列表区域
将 选择不重复的记录 选中
然后确定
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式