我只想從文字中包含特定字元(“=”)的單元格中提取單字。
A2: Dolly made me a homemade=cake and some muffins
A3: we had cheese=cake for dinner
A4: Everyone loves how the bakery makes some awesome=cakes
我希望列 (A2:A4) 中的以下內容在列 (B2:B4) 中提供以下結果。
B2: homemade=cake
B3: cheese=cake
B4: awesome=cakes
我已經使用工作表函數嘗試了以下解決方案。
A2: Johnny made his own dinner=lastnight and then cleaned the kitchen
=TRIM(TRIM(IFERROR(RIGHT(SUBSTITUTE(LEFT(A2,SEARCH(" ",A2&" ",SEARCH("=",A2))-1)," ",REPT(" ",LEN(A2))),LEN(C246)),""))),""),
正如您所看到的,該公式不起作用,因為它僅提取 (“=”) 符號右側的數據,結果如下。然而,我正在尋找一種解決方案,可以提取(“=”)符號所在位置的整個單字(右側和左側)。
答案1
嘗試以下操作U塞爾D精緻的F塗油(UDF)
Public Function Equals(inpt As String) As String
Equals = ""
ary = Split(Application.WorksheetFunction.Trim(inpt), " ")
For Each a In ary
If InStr(1, a, "=") > 0 Then
Equals = a
Exit Function
End If
Next a
End Function
使用者定義函數 (UDF) 非常易於安裝和使用:
- ALT-F11 調出 VBE 窗口
- ALT-I ALT-M 開啟新模組
- 將內容貼進去並關閉 VBE 窗口
如果儲存工作簿,UDF 將隨之儲存。如果您使用的是 2003 年以後的 Excel 版本,則必須將檔案另存為 .xlsm 而不是 .xlsx
若要刪除 UDF:
- 如上所示調出 VBE 窗口
- 清除程式碼
- 關閉VBE視窗
若要使用 Excel 中的 UDF:
=等於(A1)
要了解有關巨集的更多信息,請參閱:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
和
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
有關 UDF 的詳細信息,請參閱:
http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx
必須啟用巨集才能使其工作!
編輯#1:
你可以做到這一點,無需程式設計語言,使用相同的方法。數據在A1, 在C1進入:
=TRIM(MID(SUBSTITUTE($A1," ",REPT(" ",999)),COLUMNS($A:A)*999-998,999))
並複製過來。然後在B1進入:
=INDEX(C1:IV1,MATCH("*=*",C1:IV1,0))
答案2
Excel 具有許多文字函數,可協助您從另一個文字字串中提取單字或文字。使用哪個函數或函數組合取決於您的情況。範例:假設儲存格 A1 具有文字字串:“創造力需要勇氣放棄確定性”
1. 要取得字串的前 5 個字符,我們使用 LEFT 函數:=LEFT(A1,5) 結果是“Creat” 2. 要取得字串的最後 11 個字符,我們使用 RIGHT 函數:=RIGHT(A1,11) 結果是“certainties” 3. 要從字串中從位置 10 開始取得 7 個字符,我們使用 MID 函數: =MID(A1,10,7) 結果為「y requi」。 4.要取得字串的第一個單詞,我們使用 LEFT 和 FIND 函數: =LEFT(A1,(FIND(” “,A1)-1)) 結果是“Creativity”。 - 更多資訊請見:http://www.exceldigest.com/myblog/2009/02/01/how-to-extract-text-from-another-text-string/#sthash.yNDHU7Xe.dpuf