標題:
[發問]
請問要如何從左邊非0的數字開始取剩餘字串;或從右邊往左取到0值前一字串取
[打印本頁]
作者:
peter460191
時間:
2014-4-21 11:36
標題:
請問要如何從左邊非0的數字開始取剩餘字串;或從右邊往左取到0值前一字串取
請問各位專家:
要如何從左邊非0的數字開始取剩餘字串;或從右邊往左取到0值的前一字串,謝謝您!
[attach]18102[/attach]
作者:
p212
時間:
2014-4-21 13:11
回復
1#
peter460191
陣列公式
=RIGHT(A2,LEN(A2)-LEN(LEFT(A2,MIN(IF(MID(A2,ROW(INDIRECT("1:10")),1)="0",99,ROW(INDIRECT("1:10"))))-1)))
作者:
peter460191
時間:
2014-4-21 13:25
回復
2#
p212
非常謝謝你!可以抓的到了!
另再請教,如不用陣列,用一般函數公式有辦法寫嗎?
作者:
p212
時間:
2014-4-21 13:39
回復
3#
peter460191
因為要逐一取出儲存格中的字元 (今假設資料的最大長度為10個字,ROW(INDIRECT("1:10"))製造{1,2,3,4,5,6,7,8,9,10}陣列值。),故採陣列方式處理;致於如何使用一般公式處理,吾人不解,有待熱心的前輩們指導,謝謝!
作者:
peter460191
時間:
2014-4-21 13:47
回復
4#
p212
了解!
還是非常感謝您!
只是陣列我不太熟悉,須花點時間學習,我會再努力看看
再一次謝謝您指導!
作者:
aer
時間:
2014-4-21 16:32
回復
1#
peter460191
試試看是否可以使用
=LEFT(A2,FIND("-",A2,1)-1)*1&RIGHT(A2,2)
作者:
Hsieh
時間:
2014-4-21 16:43
回復
3#
peter460191
B2公式
=--LEFT(A2,FIND("-",A2)-1)&MID(A2,FIND("-",A2),LEN(A2))
作者:
p212
時間:
2014-4-21 17:27
本帖最後由 p212 於 2014-4-21 17:28 編輯
回復
7#
Hsieh
超級感謝Hsieh 超版的指點,請問
若儲存格A2內容為00ab15-1,7#的一般公式如何修改方可得「ab15-1」的答案?
煩請指導,謝謝!
作者:
Hsieh
時間:
2014-4-21 23:09
回復
8#
p212
包含非數值字元無法以數值轉換方式去除0
試試
=RIGHT(A1,LOOKUP(2,1/(MID(A1,LEN(A1)-ROW(INDIRECT("A1:A"&LEN(A1)-1)),1)<>"0"),ROW(INDIRECT("A2:A"&LEN(A1)))))
作者:
peter460191
時間:
2014-4-22 09:01
回復
6#
aer
謝謝 aer 的教導,可以用
要來好好研究。
作者:
peter460191
時間:
2014-4-22 09:10
回復
7#
Hsieh
謝謝 Hsieh 超級版主的指導,可以用
可以請教版主,公式前的兩個"--"是什麼意思?我google不到
作者:
p212
時間:
2014-4-22 09:33
本帖最後由 p212 於 2014-4-22 09:42 編輯
回復
9#
Hsieh
謝謝超版傾囊相授,不過對於9#的解法仍有些許的疑惑,可否指導?
儲存格B2一般公式
=RIGHT(A2,LOOKUP(2,1/(MID(A2,LEN(A2)-ROW(INDIRECT("A1:A"&LEN(A2)-1)),1)<>"0"),ROW(INDIRECT("A2:A"&LEN(A2)))))
拆解分析
1、為何INDIRECT("A2:A"&LEN(A2))與INDIRECT("A1:A"&LEN(A2)-1)運算結果是相同的,但卻要針對不一樣的「範圍」計算?
2、為何INDIRECT(
"A2:A"&LEN(A2)
)與INDIRECT(
"A1:A"&LEN(A2)-1
)的ref_text是「範圍」的情況,但運算結果卻是該公式所在的對應列的值?(在Excel說明檔中未見該用法)
3、又ROW(INDIRECT("A2:A"&LEN(A2)))向下複製公式其產生的值皆為2;ROW(INDIRECT("A1:A"&LEN(A2)-1))向下複製公式其產生的值皆為1,為何還要套用公式?
作者:
Hsieh
時間:
2014-4-22 10:25
回復
12#
p212
公式雖為一般公式輸入,但實際運算仍是陣列公式運算
在MID函數內是用A2字元數減去字元數的降幂陣列值做為擷取字串
如00ab105-01
有10個字元,ROW(INDIRECT("A1:A"&LEN(A2)-1))會得到1~9的數值陣列
LEN(A2)-1~9則得到9~1的數值陣列
MID(A2,9~1,1)就從右側開始擷取字串得到{0,-,5,0,1,b,a,0,0}這些字串
1/({0,-,5,0,1,b,a,0,0}<>0)則得到
1與除以零的錯誤組成的陣列
用LOOKUP函數取出此陣列最後一個數值就是a的位置
LOOKUP可使兩個陣列參數做對應
第二個參數陣列用ROW(INDIRECT(”A2:A”&LEN(A2))
則得到2~10的數值陣列
{0,-,5,0,1,b,a,0,0}與{2,3,4,5,6,7,8,9,10}
對應a的位置是8
RIGHT(A2,8)就得到想要的字串
作者:
peter460191
時間:
2014-4-22 10:32
回復
7#
Hsieh
版主您好,我在您過去的帖子中看到 "--" 的用法了,
請問是不是和在公式前加 value()的意思一樣
作者:
p212
時間:
2014-4-22 11:37
回復
13#
Hsieh
多謝超版精闢的解說,又多學一課,開心收錄於筆記中!
作者:
kuoliang123
時間:
2014-5-2 08:40
回復
14#
peter460191
--的用法
http://www.excelperfect.com/index.php/2010/07/17/studysumproduct/
作者:
peter460191
時間:
2014-5-7 11:59
回復
16#
kuoliang123
kuoliang123 謝謝您的分享!
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)