返回列表 上一主題 發帖

[發問] 請問要如何從左邊非0的數字開始取剩餘字串;或從右邊往左取到0值前一字串取

回復 7# Hsieh


    謝謝 Hsieh 超級版主的指導,可以用
  可以請教版主,公式前的兩個"--"是什麼意思?我google不到
peter460191

TOP

本帖最後由 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,為何還要套用公式?

TOP

回復 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)就得到想要的字串
學海無涯_不恥下問

TOP

回復 7# Hsieh


    版主您好,我在您過去的帖子中看到 "--" 的用法了,
   請問是不是和在公式前加 value()的意思一樣
peter460191

TOP

回復 13# Hsieh
多謝超版精闢的解說,又多學一課,開心收錄於筆記中!

TOP

回復 14# peter460191

--的用法
http://www.excelperfect.com/index.php/2010/07/17/studysumproduct/
kuoliang

TOP

回復 16# kuoliang123


    kuoliang123  謝謝您的分享!
peter460191

TOP

        靜思自在 : 不要隨心所欲,要隨心教育自己。
返回列表 上一主題