excel - 如何在同一单元格中查找重复项并在 VBA 中删除一个实例
问题描述
我无法更改的单独程序会添加到电子表格中,有时会重复某些内容。
例如:在单元格 5、3
ABC, vbd, S19M-0027757-27760, S19M-0027757-27760(1)
或者它可能是
ABC, vbd S19M-0027757-27760, S19M-0027757-27760(1)
我需要做的是用 S19M-0027757-27760(1) 替换它们,所以结果是:
ABC, vbd, S19M-0027757-27760(1)
到目前为止,我有:
For i = 5 To lRow
inputArray = Split(Cells(i, 3).Value, " ")
For j = 0 To (UBound(inputArray) - LBound(inputArray) - 1)
Dim firstString As String
Dim secondString As String
firstString = inputArray(j)
secondString = inputArray(j + 1)
Next
Next
我在想下一步是逐字比较?但是逗号和(1)呢?
解决方案
尝试这个。可能没有足够的例子来确保它在所有情况下都有效,但是一个简短的测试有效。
Sub x()
Dim i As Long, inputArray, j As Long, outputArray(), k As Long
For i = 1 To 3
inputArray = Split(Cells(i, 3).Value, ", ")
For j = LBound(inputArray) To UBound(inputArray)
k = k + 1
ReDim Preserve outputArray(1 To k)
If j = UBound(inputArray) - 1 Then
If inputArray(j + 1) Like inputArray(j) & "(*)" Then
outputArray(k) = inputArray(j + 1)
Exit For
Else
outputArray(k) = inputArray(j)
End If
Else
outputArray(k) = inputArray(j)
End If
Next j
Cells(i, 4).Value = Join(outputArray, ", ")
Erase outputArray: k = 0
Next i
End Sub
推荐阅读
- azure - Azure 是否支持整页缓存?
- python - 是否有检查列表连续性的功能?
- c# - 过滤所选字符串后,我可以将列表转换为类吗?
- html - 处理 CSS 中的媒体查询
- react-native - 任务 ':app:processDebugResources' 执行失败。错误
- visual-c++ - 强制在 Microsoft 混合系统上使用集成 (Intel) 显卡
- html - 如何在 Konva 阶段添加可滚动区域?
- outlook-web-addins - 将本地附件添加到新消息表单
- android - 在单个 Activity 中访问多个布局的元素
- c++ - 如何在c ++中的char []中传递变量值