我有一些Excel产品的库存清单。我需要用某些数据替换单元格的中间部分。
让我们说每个单元格都有如下数据:
Ronald RFD2322 Green 34 x 55 Large
但每个细胞都不同。
可能如上所述,以下可能是
Ronald RFD8827 Blue 21 x 25 Small
我需要用名称替换看起来像型号(RFD2322)的中间部分,但有些名称不同。我需要细胞看起来像
Ronald Jimmy Green 34 x 55 Large
Ronald Sarah Blue 21 x 25 Small
如果没有人对此有答案,如何至少用空格替换单元格的中间位置,以便我可以返回并手动修复它?
答案 0 :(得分:0)
此公式将返回Ronald Green 34 x 55 Large
,假设数据位于单元格A1
=LEFT(a1,FIND(" ",a1)-1)&MID(a1,FIND(" ",a1,FIND(" ",a1)+1),99)
看看你的问题,如果要替换的数据是在一列中会更有意义。例如。如果Jimmy
位于B1
=LEFT(a1,FIND(" ",a1)-1)&B1&MID(a1,FIND(" ",a1,FIND(" ",a1)+1),99)
NB 99是一个随机数,被选中,因为不要指望你会有多个字符。它很愚蠢,因为它是LEFT
和RIGHT
函数的可选项,但MID
需要它。
答案 1 :(得分:0)
如果你对VBA没问题,可以使用RegEx解决方案。
Function simpleCellRegex(Myrange As Range) As String
' Shamelessly lifted from https://stackoverflow.com/a/22542835/4650297
Dim regEx As New RegExp
Dim strPattern As String
Dim strInput As String
Dim strReplace As String
Dim strOutput As String
strPattern = "[R][F][D]...."
If strPattern <> "" Then
strInput = Myrange.Value
strReplace = ""
With regEx
.Global = True
.MultiLine = True
.IgnoreCase = False
.Pattern = strPattern
End With
If regEx.test(strInput) Then
simpleCellRegex = regEx.Replace(strInput, strReplace)
Else
simpleCellRegex = "Not matched"
End If
End If
End Function
因此,如果单元格A1是&#34; Ronald Blue RFD8827 21 x 25 Small&#34 ;,在B1中,只需执行=simpleCellRegex(A1)
。确保添加了正则表达式引用,请参阅Step 1 here来执行此操作。
这里的一个好处是,RFD ####可以在单元格中的任何位置,并且它将被删除。你也可以通过公式得到这个,但我认为他们会变得非常复杂和棘手。