2016-09-16 30 views
0

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

如果沒有人有一個答案,如何至少用一個空格替換電池的中間,所以我可以回去和手動修復它?

+0

您的所有產品都會以'RFD'開頭嗎?或'RF',或...?我們怎麼能知道這是一個產品ID,而不是一些文字,一個人的名字等等? (它會總是有7個字符嗎?它總是以R開始,並且是7個字符,等等。我們只需要一種方法來檢測模式,那麼它應該很簡單。) – BruceWayne

+0

除了上面的內容,你有一張桌子在什麼地方等同於應該用什麼來取代它? –

+0

是的,他們都是以RFD開頭的,之後有4位數字,所以每個都是7個字符。另外,是的,我需要將名稱放入模型#所在的空間。 – DigitalWalrus

回答

0

這個公式將返回Ronald Green 34 x 55 Large假設數據是在細胞A1

=LEFT(a1,FIND(" ",a1)-1)&MID(a1,FIND(" ",a1,FIND(" ",a1)+1),99) 

看到你的問題,它會更有意義,如果該數據將取代在列。例如。如果JimmyB1

=LEFT(a1,FIND(" ",a1)-1)&B1&MID(a1,FIND(" ",a1,FIND(" ",a1)+1),99) 

NB 99是一個隨機數,選擇爲不指望你會比許多字符。這很愚蠢,因爲它可以選擇LEFTRIGHT的功能,但需要MID

+0

小心 - 如果第二個字符串是RFD編號,這將起作用。如果它在別的地方,它不起作用。 – BruceWayne

+0

工作很好,但數據返回RonaldJimmy Green 34 x 55大,如何在名稱之間添加空格? – DigitalWalrus

+0

@TayseNick - '= LEFT(a1,FIND(「」,a1)-1)&「」&MID(a1,FIND(「」,a1,FIND(「」,a1)+1)99)' – BruceWayne

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是 「羅納德·藍RFD8827 21×25小」,在B1,只是做=simpleCellRegex(A1)。確保添加了正則表達式參考,請參閱Step 1 here來做到這一點。

這裏的一個好處是,RFD ####可以在單元格中的任何位置,並且它將被刪除。你也可以用公式來獲得這個,但我認爲他們會變得相當複雜和棘手。

+0

謝謝,你以前的解決方案效果很好。雖然我不熟悉VBA。對此,我真的非常感激。 – DigitalWalrus

+0

@TayseNick - 不用擔心。您只需將該VBA放入宏中即可。 [https://www.ablebits.com/office-addins-blog/2013/12/06/add-run-vba-macro-excel/],然後運行'= simpleCellRange(a1) '在Excel中,就好像它是'= Sum()',等等 – BruceWayne

相關問題