平凡 asked in 電腦與網際網路軟體 · 1 decade ago

excel 排序資料含#value 如何解決?

嗨~

目前在作一欄位資料排序時遇到疑問,

 現有有一欄資料(內含文字及數字)如下:

欄位 / 資料

(aa1)某某某某公司

(aa2) a9009

(aa3)1110

(aa4)1210

(aa5)王老闆

(aa6)2290

(aa7)核准

(aa8)1130

------------------

上面的資料是用=INDEX(A:A,SMALL(IF(IF(ISNA(MATCH($A$1:$A$540,A:A,0)),"",MATCH($A$1:$A$540,A:A,0))=ROW($A$1:$A$540),ROW($A$1:$A$540),""),ROW()))

公式求得,原範圍a1:a540所有重複資料中,擷取不重複的各別選項(也就是每筆重複資料或不重複資料僅挑出一次於此)而來

 ---------------

  就上述出現的aa1:aa8欄位資料中,

  包含數字和文字部分,

  我最終目的是希望能將aa1:aa8欄位的有含數字的資料

  擷取出來於ac1欄,並排序,

  (如下)

(原始資料)

(aa1)某某某某公司

(aa2) a9009

(aa3)1110

(aa4)1210

(aa5)王老闆

(aa6)2290

(aa7)核准

(aa8)1130

********

(希望變成)

(ac1)1110

(ac2)1130

(ac3)1210

(ac4)2290

(ac5)a9009

(純文字部分就不要擷取過來)

-----------------------

我目前的作法是,在ac欄用公式

=IF(right(aa1,1)+right(aa1,3)>2,aa1,0)下拉,

這樣一來,

(原始資料)

(aa1)某某某某公司

(aa2) a9009

(aa3)1110

(aa4)1210

(aa5)王老闆

(aa6)2290

(aa7)核准

(aa8)1130

********

(就會變成)

(ac1)#value

(ac2)a9009

(ac3)1110

(ac4)1210

(ac5)#value

(aa6)2290

(aa7))#value

(aa8)1130

*******

(希望變成)

(ac1)a9009

(ac2)1110

(ac3)1210

(ac4)1130

(ac5)2290

(aa6)#value

(aa7)#value

(aa8)#value

後續我想要把求得的資料按排序,可是資料內含#value

無法成功,

其實我只要將我要的資料往上(ac1儲存格)往上提,不要的資料(#value部分)排最後就可以了,不一定要將數值資料按大小排序,

!!所以請問高手~排序資料含有#value的話該怎麼

辦呢?有其他的公式嗎?謝謝大家!!

Update:

to Vincent 大大:

後來您又幫我將公式修改成絕對參照

={INDEX($A$1:$A$540,SMALL(IF(IF(ISNA(MATCH(IF(LENB($A$1:$A$540)=LEN($A$1:$A$540),$A$1:$A$540,""),$A$1:$A$540,0)),"",MATCH($A$1:$A$540,$A$1:$A$540,0))=ROW($A$1:$A$540),ROW($A$1:$A$540),""),ROW()))&""}

果然克服到格式的問題了,真的好厲害!

4 Answers

Rating
  • 1 decade ago
    Favorite Answer

    圖片參考:http://tw.yimg.com/i/tw/blog/rte/smiley_4.gif

    先用您原來的公式修改一下,去掉含有中文字部份

    您上面的公式改為

    =INDEX(A:A,SMALL(IF(IF(ISNA(MATCH(IF(LENB($A$1:$A$540)=LEN($A$1:$A$540),$A$1:$A$540,""),A:A,0)),"",MATCH($A$1:$A$540,A:A,0))=ROW($A$1:$A$540),ROW($A$1:$A$540),""),ROW()))

    先試試,有問題再討論囉~~^

    • Login to reply the answers
  • 1 decade ago

    to 小花:

      請問,您說的還要增加一欄,是指我已經將原始(a欄)right至(ac欄)後,再於其他欄用一次right的意思嗎?

    如此再一次的欄位會相同我做過的(ac欄)耶,

    然後↓

    "此時再排序B欄為第一優先依據,採遞減,A欄為第二依據採遞增"

    不太懂,可以再幫我詳細解說嗎?不好意思!因為我資料有#VALUE無法排序,您可以嗎?

    2007-12-03 14:54:54 補充:

    to Vincent:

    您說的

    (aa1)=INDEX(A:A,SMALL(IF(IF(ISNA(MATCH(IF(LENB($A$1:$A$540)=LEN($A$1:$A$540),$A$1:$A$540,""),A:A,0)),"",MATCH($A$1:$A$540,A:A,0))=ROW($A$1:$A$540),ROW($A$1:$A$540),""),ROW()))

    我試過還是會再傳回中文資料,

    經過=IF(right(aa1,1)+right(aa1,3)>2,aa1,0)下拉,

    還是會有#value出現哩@@

    • Login to reply the answers
  • Trump
    Lv 7
    1 decade ago

    建議解決方法:

    把此公式 =INDEX(A:A,SMALL(IF(IF(ISNA(MATCH($A$1:$A$540,A:A,0)),"",MATCH($A$1:$A$540,A:A,0))=ROW($A$1:$A$540),ROW($A$1:$A$540),""),ROW()))

    多個判斷式,將傳回錯誤訊息改成空白儲存格。

    • Login to reply the answers
  • 小花
    Lv 5
    1 decade ago

    我的做法是還要增加一欄

    如你的資料在A欄,則在B欄B1打上=RIGHT(A1,6)

    B欄資料

    6)2290

    #value

    8)1130

    #value

    )a9009

    3)1110

    4)1210

    #value

    此時再排序B欄為第一優先依據,採遞減,A欄為第二依據採遞增

    就可得到你要的結果

    希望能幫到你

    2007-12-04 13:18:31 補充:

    http://www.FunP.net/338746

    這個檔案你參考一下,就依檔案中圖片去做排序依據

    B欄為第一優先依據,採遞減,A欄為第二依據採遞增

    • Login to reply the answers
Still have questions? Get your answers by asking now.