我有一个电子表格,我经常收到包含大量包含名称的单元格的电子表格。一些单元格具有全名,包括带句点的中间缩写。
例如:
施普林格,杰里·A。
尽管我偶尔收到的表格会有以下内容:
施普林格,杰里。
我需要去除那些中间的缩写,但还要检查以确保删除了“。”。如果有的话。
原谅我缺乏适当的逻辑,但我有以下ca-ca子代码:
Sub DeleteMiddleI()
Dim nr1, nr2 As Range
Dim col As Integer
col = 1
Set nr1 = Cells(65536, col).End(xlUp)
Set nr2 = Cells(col, 1)
Do While nr2 <> nr1
'Check to be sure the cell isn't empty
If Len(nr2) <> 0 Then
'Check to see if the last character is a "."
If Right$(nr2, 1) = "." Then
'Check and be sure there is a character before the "."
If InStr(1, nr2.Text, "[A-Z].") > 0 Then '<<<<<<CODE BREAKAGE
nr2 = Left$(nr2, Len(nr2) - 3)
End If
End If
End If
col = col + 1
Set nr2 = Cells(col, 1)
Loop
End Sub
它打破了
如果InStr(1,nr2.Text,“ [A-Z]。”)> 0然后
我觉得很蠢...但是我想念的是什么?
最佳答案
这会有所帮助吗?这将替换所有的“。”一无所有。
Option Explicit
Sub Sample()
Sheets("Sheet1").Cells.Replace What:=" .", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
End Sub
编辑
您删除首字母缩写是什么意思?您的意思是将
Springer, Jerry A.
更改为Springer, Jerry
还是将Springer, Jerry .
更改为Springer, Jerry
如果是,那么这会有所帮助吗?
Option Explicit
Sub Sample()
Dim LastRow As Long
Dim Pos As Long, i As Long
With Sheets("Sheet1")
LastRow = .Range("A" & Rows.Count).End(xlUp).Row
For i = 1 To LastRow
Pos = InStr(1, .Range("A" & i).Value, ", ") + 2
If Pos > 2 Then
Pos = InStr(Pos, .Range("A" & i).Value, " ")
If Pos > 0 Then .Range("A" & i).Value = Mid(.Range("A" & i).Value, 1, Pos - 1)
End If
Next i
End With
End Sub
关于vba - 字符串中的通配符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10453853/