請教各位大大
555WELL-USDXXXXXXXXXXX
WELL-USDXXXXXXXXXXX
以上字串2種格式
我希望選取WELL(某個英文字),WELL前面有時是數字,有時沒有
請問各位大大
我儲存格的參數該怎麼設定呢?
覺得這似乎不是光用表格內建函數能做到,
依在下的想法步驟,
步驟1. 先截取出 "-" 符號左側的字串部份.
步驟2. 再從所截取出的字串,找到第一個非數值的字元位置,然後以這為起始點,截取後面的字串部份.
問題就在於 "步驟2." 中,
如何找到一個字串中,其第一個非數值的字元位置,
這個部份似乎不是光用內建函數能做到的...
所以,目前在下是覺得您可以改用建立自訂函數來實現您要的功能,如下:


Excel範例文件
附加壓縮檔: 201512/mobile01-4b4b68d797172a33eb04e8a82dfc3eb3.zip
a22497967 wrote:
555WELL-USDXXXXXXXXXXX
WELL-USDXXXXXXXXXXX
...(恕刪)
如果 數字一定在左邊,英文字後面一定有"-"
這種簡單的固定格式,用公式沒問題的
範例(假設每格字元數不超過30個)
以下在同一行,a2、a3…的公式,直接往下拉就可以了
=MID(LEFT(A1,FIND("-",A1)-1),SUMPRODUCT(- -ISNUMBER(MID(A1,ROW($A$1:$A$30),1)+0))+1,FIND("-",A1)-1)
antonioChang wrote:
同意樓上大大,需自製函數
以下東施效顰之作,見笑了:
Function getMyString(ByVal str As String) As String
If InStr(str, "-") > 0 Then str = Left(str, InStr(str, "-") - 1)
getMyString = str
If IsNumeric(Left(str, 1)) Then getMyString = getMyString(Right(str, Len(str) - 1))
End Function
您寫的這個函數是採用遞迴的寫法,
內容也達到精簡的原則,
這個用法在下覺得很有新意,
謝謝您的分享^^
snare wrote:
如果 數字一定在左邊,英文字後面一定有"-"
這種簡單的固定格式,用公式沒問題的
範例(假設每格字元數不超過30個)
以下在同一行,a2、a3…的公式,直接往下拉就可以了
=MID(LEFT(A1,FIND("-",A1)-1),SUMPRODUCT(- -ISNUMBER(MID(A1,ROW($A$1:$A$30),1)+0))+1,FIND("-",A1)-1)
您寫的這個公式,在下端詳了一會才暸解其用意,
只是沒想到陣列的取得方式,還有這樣的用法,
又學了一招,謝謝您的分享.^^
但還是想向您請教一下,
1.右邊這一段公式部份 ---> MID(A1,ROW($A$1:$A$30),1)+0
為何式子的最右邊還要 "+0" ?
2.還有右邊這一段 ---> --ISNUMBER(.......
ISNUMBER左邊的 "--" 是代表什麼意思?
雖然整段公式的用意是大略知道了,
但看來看去還是不知以上二個地方其用意為何? 這另在下還是感到蠻疑惑的^^"
yuehmao wrote:
1.右邊這一段公式部份 ---> MID(A1,ROW($A$1:$A$30),1)+0
為何式子的最右邊還要 "+0" ?
2.還有右邊這一段 ---> --ISNUMBER(.......
ISNUMBER左邊的 "--" 是代表什麼意思?...
其實不一定要 +0 ,+1 +2 *1 *2…都可以,因為要算幾個數字,所以數值不重要
字串用mid()拆到陣列,然後隨便做個運算,故意讓文字出錯
然後用 isnumber()求 true false
其實不運算應該也可以,但在這串公式裡面,不運算,結果就會出錯
反正可以用了,我懶的改了

-- 是 sumproduct 用的
sumproduct 對於 true false,無法計算,所以要用--轉成數值
這樣就可以算出字串中有2個數字
我以前在這一篇有解釋過,您可以參考
http://www.mobile01.com/topicdetail.php?f=511&t=3753791&p=1#50771801
過程大概就像這樣
例:12abc-usx
mid()拆字=>運算=> true or false => 1 or 0 => 加總找出字數、位置 =>最後再用mid()取出英文
1 + 0 =1 true 1
2 + 0 =2 true 1
a + 0 =#value! false 0
=>會出錯,文字不能計算
b + 0 =#value! false 0
c + 0 =#value! false 0
- + 0 =#value! false 0
u + 0 =#value! false 0
s + 0 =#value! false 0
x + 0 =#value! false 0
內文搜尋
X



























































































