excel vba代码要怎么写

2024-11-22 15:37:24
推荐回答(5个)
回答1:

用如何代码可实现,假设原数据在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. 点击执行,即得到想要的结果:

回答2:

假设时间在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

回答3:

好了写完了。注,原数列必须要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

回答4:

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

回答5:

数据--筛选--高级筛选
选中 列表区域
将 选择不重复的记录 选中
然后确定