返回列表 上一主題 發帖

取代雙引號內的字串

本帖最後由 准提部林 於 2015-12-4 16:14 編輯

一個字串中有幾組雙引號?
也許最好多提供些例子!

先以一組雙引號為例:
=LOOKUP("龥",IF({1,0},A1&"",REPLACE(A1,FIND(" ",A1,SEARCH("""* *""",A1)),1,"_")))

=IF(ISERR(SEARCH("""* *""",A1)),A1&"",REPLACE(A1,FIND(" ",A1,SEARCH("""* *""",A1)),1,"_"))

TOP

本帖最後由 准提部林 於 2015-12-10 13:27 編輯

雙引號組數有多組, 文字字元數不固定, 可考慮自訂函數:
Function Replace_Space(xStr$) As String
Dim i%, N%, K%, T$, TT$
For i = 1 To Len(xStr)
  T = Mid(xStr, i, 1)
  '_逐一取出字串的字元 
  If T = """" Then N = 1 - N:  K = 0 
  '_T若為雙引號,N值轉換成1或0_當N=0,1-0=1_當N=1,1-1=0_K歸零 
  If N = 1 And K = 0 Then K = InStr(i + 1, xStr, """")
  '_當N=1,表示是每對雙引號的〔第1個〕,再去檢查其後是否有另一個雙引號可配對,若有,則K>0  
  If K > 0 And T = " " Then T = "_" 
  '_當K>0,表示〔空白格〕仍在雙引號範圍中,取代為"_",直至再遇到下一個雙引號為結束,N及K返回0 
  TT = TT & T
Next i
Replace_Space = TT
End Function


公式:=Replace_Space(A1) 

TOP

回復 7# VANESSA


樓上已加入註解,邏輯很簡單,但須花些時間去理解!

TOP

If N = 1 And K = 0 Then K = InStr(i + 1, xStr, """")

改成如下,可提示雙引號無配對:
If N = 1 And K = 0 Then
  K = InStr(i + 1, xStr, """")
  If K = 0 Then TT = "雙引號無法配對, 請檢查!": Exit For
End If

TOP

        靜思自在 : 好事要提得起,是非要放得下,成就別人即是成就自己。
返回列表 上一主題