Board logo

標題: [發問] 儲存格內相同字串處理_取代 [打印本頁]

作者: a703130    時間: 2013-2-20 16:52     標題: 儲存格內相同字串處理

請問各位大大

如附件,這是一首歌的歌詞
下面字串會在儲存格內重複出現
"I've been locked out of heaven"

我想知道
是否能將這許多相同的字串分別放到陣列內,以便做各別處理
如果可行應該如何做??

是否可將搜尋到的第二個及最後相同的字串替換為 "END",而其他字串仍為原本字串??

[attach]14195[/attach]

請大大解惑~謝謝
作者: loquat    時間: 2013-2-20 17:30

保留空格
  1. =MID($A$1,COLUMN(A1),1)
複製代碼
不保留空格
  1. =MID(SUBSTITUTE($A$1," ",""),COLUMN(A1),1)
複製代碼

作者: Hsieh    時間: 2013-2-20 23:38

回復 1# a703130
  1. Sub ex()
  2. mystr = "I've been locked out of heaven"
  3. k = UBound(Split([C5], mystr))
  4. MsgBox "取代第2組" & Application.WorksheetFunction.Substitute([C5], mystr, "END", 2)
  5. MsgBox "取代第最後一組" & Application.WorksheetFunction.Substitute([C5], mystr, "END", k)
  6. End Sub
複製代碼

作者: a703130    時間: 2013-2-21 10:22

回復 3# Hsieh


謝謝大大
沒想到簡單幾行字便能解決
作者: a703130    時間: 2013-2-21 21:58

回復 3# Hsieh

請問是否能用replace 方式直接替換?
作者: a703130    時間: 2013-2-22 18:34     標題: 儲存格內相同字串處理_取代

如下面連結

http://forum.twbts.com/thread-9000-1-1.html

我學到replace的方法

但是又遇到另一個問題
如附件
[attach]14215[/attach]

我如果要取代字串中的Never

但我也會同時取代 Never_1 ...

不知道是否有方法只取代 Never 而不會連Never_1 等類似字串一起取代
作者: Hsieh    時間: 2013-2-22 19:11

回復 1# a703130
Never加上一個空白鍵作為搜尋目標
要取代的字串也加上空白鍵
作者: a703130    時間: 2013-2-22 20:04

回復 2# Hsieh

你的意思是

單一 Never 字串都在後面加上空白辨識嗎??
作者: Hsieh    時間: 2013-2-22 22:05

回復 3# a703130

附件中的Never後面有一個空格,可以跟Never_做識別
所以只有此方法做2者區別
作者: a703130    時間: 2013-2-23 11:12

回復 4# Hsieh

謝謝H大~以了解

[attach]14236[/attach]
我現在遇到另一個問題
當我資料變多時,我是使用do loop 遇到"END" 停止處理
而旁邊的儲存格是我取代的關鍵字
這部份也是用do loop 遇到" " 停止處理
取代後的儲存格要存至cells(x,9) ,x 往下增加
但是最後會變成只取代1_Never_

尋找的字串      待取代的字串
Never                             Test
Never_1                     apple
1_Never_                     Gone

是否有辦法解決??
作者: Hsieh    時間: 2013-2-23 11:45

回復 5# a703130
  1. Sub ex()
  2. Set Rng = Range([C2], [C:C].Find("End", lookat:=xlWhole))
  3. For Each a In Range([F2], [F2].End(xlDown))
  4.      mystr = Join(Application.Transpose(Rng), "、")
  5.      a.Offset(, 2) = Replace(mystr, a & " ", a.Offset(, 1) & " ")
  6. Next
  7. End Sub
複製代碼

作者: GBKEE    時間: 2013-2-23 16:02

回復 5# a703130
6# Hsieh超版 用的是Replace 函數
也可用 Replace 方法
  1. ption Explicit
  2. Sub Ex()
  3.     Dim Rng As Range, a As Range
  4.     Set Rng = Range([C2], [C:C].Find("End", lookat:=xlWhole))
  5.     For Each a In Range([F2], [F2].End(xlDown))
  6.     ' mystr = Join(Application.Transpose(Rng), "、")
  7.         a.Offset(, 2) = Rng.Replace(a & " ", a.Offset(, 1) & " ", xlPart)
  8.     Next
  9. End Sub
複製代碼

作者: a703130    時間: 2013-2-25 20:41

回復 11# Hsieh

Sub ex()
Set Rng = Range([C2], [C:C].Find("End", lookat:=xlWhole))    '設定尋找範圍
For Each a In Range([F2], [F2].End(xlDown))                                 '取代的數量
     mystr = Join(Application.Transpose(Rng), "、")                     '???
     a.Offset(, 2) = Replace(mystr, a & " ", a.Offset(, 1) & " ")      
Next
End Sub
   
請問  mystr = Join(Application.Transpose(Rng), "、")  這行的意思是??  "、"用意為何?
作者: Hsieh    時間: 2013-2-25 20:58

回復 13# a703130

mystr = Join(Application.Transpose(Rng), "、")                     
以頓號(、)連結Rng範圍的內容




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)