Board logo

標題: [發問] 請問要如何從左邊非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/)