看板 Visual_Basic 關於我們 聯絡資訊
: 推 fumizuki:Excel XP 測試 Regular Expression無效@@ 01/06 21:34 : → MOONRAKER:啊?可是我這邊的程式是用Excel 2003跑出來的啊 01/06 22:11 : → MOONRAKER:馬上再測一遍,真的回家就沒效…那先前到底是怎麼弄的… 01/06 22:14 回憶起來一些細節,當時我曾想看ubound(segs)的值,怎麼看都是0 那時怎麼想也想不透,現在想通了,因為那時根本沒切出token 看來regex的寫法真的是沒效,我洨了,對不起大家 XD 回到正題,我一直不懂為什麼split()每兩個分隔符號之間就一定拆出一個子字串 就算長度0也照拆 所以碰到單字間有一個以上的空白,陣列裡就會有很多空字串 "" 我會這樣寫來跳過空字串: Sub abc() For i = 1 To 4 segs = Split(Cells(i, 1), " ") j = 0 ' j : 在下面的 for 中使用,用來查看結果陣列 segs x = 1 ' x : 現在抓到的非0元素是第幾個 For j = 0 To UBound(segs) If segs(j) <> "" Then ' 確定這一個元素不是空字串… x = x + 1 ' 才寫到工作表上 Cells(i, x) = segs(j) End If Next j Next i End Sub 我也不知道有什麼更好的方法 或者我用split() 的方法一直都不對?(所以下午才呆到以為真的可以用regex)   -- BATCH 03 : 買張床 - 切達大俠 - 伐木人之歌 - http://tinyurl.com/3zpyx5 [B4準備中]: 謳歌金錢(7/02) - 單車超人(7/23) - http://tinyurl.com/66v6vq [ 番外篇 ]: 包租婆也有過當羅莉的時候(7/17) - http://tinyurl.com/6j4ale ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ 蒙帝派松正體中文計畫 Spam-a-lot and enjoy the pythonesque delight! ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ http://www.youtube.com/user/JamesBondXD▄▄ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.217.159.164
fumizuki:我想Split()應該只是依照第2個參數給的字切割成陣列而已 01/07 07:26
fumizuki:vb js c# 都沒聽說過split是regex 0.0 01/07 07:27
fumizuki:本以為Filter()可以處理,不過測試的結果 空字串不能移除 01/07 07:28
fumizuki:想要用Filter()移除陣列中空的元素,會傳回空陣列Or2 01/07 07:30
fumizuki:不用vba,excel的資料剖析功能可以輕鬆做到 01/07 07:32
Y78:Dim a As Variant 01/07 22:21
Y78:a = Split("1.157 1255.2") 01/07 22:21
Y78:ubound(a) = 1 , a(0)=1.157 a(1)=1255.2 01/07 22:21
Y78:不是就這樣分而已嗎? 我沒試過vba不清楚 01/07 22:22
Y78:Split第一個引數是字串 然後第二個引數是要分隔的字串 01/07 22:22
Y78:第二個預設值是" " 就是以空白來分 然後會回傳一個陣列 01/07 22:23
MOONRAKER:你兩個數字中間隔超過一個以上的空白試試看 01/08 10:30
MOONRAKER:基本上以上討論的是這個問題 你才一個空白那隨便也會對 01/08 10:30
Y78:如果空白數固定的話 把split第二個引數改掉就好了 01/08 22:14
Y78:如果不是 那我會這樣寫 01/08 22:14
Y78:str = "1.157 1255.2" 01/08 22:21
Y78:x = Len(str) 01/08 22:22
Y78:a = Split(str) 01/08 22:22
Y78:str = Replace(str, " ", "") 01/08 22:22
Y78:a(0) & a(x - Len(str)) 就是你要的了 01/08 22:22
Y78:但是用Replace會把原字串取代 不想的話 可以這樣 01/08 22:23
Y78:把後面那個改成 a(x - Len(Replace(str, " ", ""))) 01/08 22:23
MOONRAKER:這也只有兩個才有效。 01/08 23:21
MOONRAKER:限制條件太多的解,實在是一點意義也沒有 01/08 23:21
MOONRAKER:試問你如何處理 k1 s1 k2 s2 ... k(n-1) s(n-1) kn 01/08 23:22
MOONRAKER:n 不確定,k(i)為單字,s(i)為空白,全都不等長 01/08 23:23
MOONRAKER:這你要怎麼處理?不巧real world中這種input滿地都是 01/08 23:24
MOONRAKER:隨便找一篇空白不齊的英文文章就是了 01/08 23:24
Y78:如果很多的話 就照你那招吧 我上面的解法純粹是針對只有2個的 01/08 23:26
Y78:突然想到 其實不用那麼麻煩 第二個只要 a(ubound(a))就好了 01/09 22:26