04.07 你解決不了的這個EXCEL問題,老王隨便就拿出6種解法!

今天碰到這麼個問題,看起來好像並不是個難題,因為描述很清楚啊!請看截圖:


你解決不了的這個EXCEL問題,老王隨便就拿出6種解法!

是吧,看起來好像就是處理一些數字,一向比較喜歡吹牛B的老王趕緊趁著機會裝X:

不就用SUBSTITUTE函數把0替換成空就好了麼?請相信老王的實力!不是我吹牛,就沒有我解決不了的問題!!!你要是不信儘管來問,要是解答不出來我認做他哥!

然後我看了下大牛群:

你解決不了的這個EXCEL問題,老王隨便就拿出6種解法!

這些都是做EXCEL培訓的高級講師哦,我這小王想到的用SUBSTUITE去除0他們還不會想到?(嗯,這個時候我認作小王),然鵝,這種思路並不能解決問題。

你當我就這樣放棄了?放棄了我可就連小王都當不了了,就只能當very little王了。我不甘心,我要集齊7個公式來召喚神龍。

- - - - - 待我召喚神龍- - - - -

天氣轉涼,神龍來多了可能會下大雨,所以我先召喚6條:

你解決不了的這個EXCEL問題,老王隨便就拿出6種解法!

看到這些個公式如果你還有心情繼續看下去我真的不攔你,畢竟我解答不出問題我可是認作他哥的。

下面就一一講解各個方法的具體步驟:

方法1:

{=LEFT(A2,LOOKUP(10,0/MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1)*1,ROW(INDIRECT("1:"&LEN(A2)))))*1}

第一步:利用ROW函數和INDIRECT構造出一個數組,內容是1-8這個8個數,和ROW(1:8)一樣的效果,只不過因為這裡A2內容長度不確定,用LEN來取長度,所以公式稍微較長;

第二步:用MID()函數取A2分別從左往右取1位就相當於把原先的8位數分成了8個數,得到的結果就是這8個數的數組,乘以1是因為取出來是文本所以乘以1轉換成數字;

第三步:用0除以這個數組,其中原數組中為0的結果為#DIV/0,而不為0的結果為0;

第四步:

用LOOKUP(1,0/vector,result)這個非常經典的匹配方式來查找數組0/()中最後一個0,返回其對應的位置也就是這個構造的result數組,對A2這個返回結果是4,也就是6的位置;

第五步:根據第四步返回的位置,從左向右取對應的位數就是結果,最後乘以1是為了將文本轉化為數字。

具體步驟可參見動圖:

你解決不了的這個EXCEL問題,老王隨便就拿出6種解法!

方法2:

{=LEFT(A2,SUM((RIGHT(A2,ROW(INDIRECT("1:"&LEN(A2))))*1>0)*1))*1}

第一步:和方法一類似,用ROW+INDIRECT+LEN構造一個1-8的數組;

第二步:從右向左分別取1-8位,得到一些奇怪的結果,乘以1的話就成了數字和0組合的數組;

第三步:判斷這個數組中各元素是否大於0,乘以1將結果轉化為0或者1;

第四步:用SUM函數做個求和,結果就是大於0的個數,這個數其實就是原數據位數減去尾部0的個數,和方法一種LOOKUP得到的結果一樣;

第五步:同方法一,用LEFT函數從左向右取第四步得到的位數,同樣也要乘以1轉化為數字。

具體步驟可參見動圖:

你解決不了的這個EXCEL問題,老王隨便就拿出6種解法!

方法3:

第一步:用”0.”連接A2強制將A2轉換成了文本,看起來像個小數;

第二步:將一步中的文本乘以1得到真實的小數,這時候默認小數後面的0去除了;

第三步:將該小數中的”0.”替換為空,這時候就得到了A2去除尾部0的效果,乘以1就得到數字格式;

具體步驟可參見動圖:

你解決不了的這個EXCEL問題,老王隨便就拿出6種解法!

方法4:

=("0."&A2)*10^(LEN(("0."&A2)*1)-2)

第一步:同方法3的第一步,用”0.”連接A2得到一個文本形式的小數;

第二步:這個文本形式的小數乘以1得到真實的小數,默認小數尾部沒有0,同 方法3的第二步,這裡的結果是公式中LEN函數里的內容;

第三步:對第二步的結果用LEN函數取長度,減去2得到的是小數部門的長度;

第四步:第三步得到的結果作為10的指數,乘以第一步的結果就得到了所求結果。

具體步驟可參見動圖:

你解決不了的這個EXCEL問題,老王隨便就拿出6種解法!

方法5:

=A2/10^LEN(A2)*10^(LEN(A2/10^LEN(A2))-2)

第一步:用LEN函數獲取A2的長度,作為10的指數;

第二步:用A2的值除以第一步的結果,得到的就是一個小數,小數部分剛好是需要的結果;

第三步:獲取這個結果的長度,減去2是因為算上了“0.”的長度,這個值作為10的指數;

第四步:用第二步的結果乘以第三步的結果就得到了需要的結果

具體步驟可參見動圖:

你解決不了的這個EXCEL問題,老王隨便就拿出6種解法!

方法6:

=ZERO(A2)

第一步:咦?這個函數怎麼這麼短?有那麼多短的公式你怎麼講了上面一堆複雜的;

第二步:嗯?我的電腦上怎麼沒有這個函數?

第三步:當然沒有啊,這個是老王做的自定義函數;

第四步:為啥要自定義,碰到不好解決的問題你都可以嘗試下VBA啊,而且如果你要是經常需要處理這個問題,自定義函數可是方便很多哦:

第五步:代碼是啥?自己看

Function ZERO(TARGET As Range)

M = 1

Do

TEMP = TARGET Mod M

M = M * 10

Loop Until TEMP <> 0

ZERO = TARGET / M * 100

End Function

就不解釋了,很簡單的一段代碼。

是不是心裡有疑惑,這麼多的方法真的是老王一個人做的麼?蛤蛤蛤,不告訴你!!!

還有這麼多方法其實思路是差不多的,你GET到了麼?歡迎交流!


分享到:


相關文章: