如何替换Excel单元格的中间部分?

时间:2016-09-16 15:20:07

标签: excel

我有一些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

如果没有人对此有答案,如何至少用空格替换单元格的中间位置,以便我可以返回并手动修复它?

2 个答案:

答案 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是一个随机数,被选中,因为不要指望你会有多个字符。它很愚蠢,因为它是LEFTRIGHT函数的可选项,但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 ####可以在单元格中的任何位置,并且它将被删除。你也可以通过公式得到这个,但我认为他们会变得非常复杂和棘手。