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
谢谢! 展开
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
谢谢! 展开
7个回答
展开全部
用如何代码可实现,假设原数据在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
详细步骤如下:
展开全部
假设时间在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
那么你可以这么写:
sub quchong()
Range("a1:b10").CurrentRegion.RemoveDuplicates Columns:=2, Header:=xlYes
end sub
对a1到b10的单元格进行去重复项,其中Columns:=2就是按照b列为基准去重复项
2表示你计算区域的第二列。Header:=xlYes就是留表头,也可以理解为第一行不参与计算。
如果不留表头就写xlNo
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
好了写完了。注,原数列必须要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
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
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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
'假如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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
数据--筛选--高级筛选
选中 列表区域
将 选择不重复的记录 选中
然后确定
选中 列表区域
将 选择不重复的记录 选中
然后确定
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询