彰化一整天的論壇

 找回密碼
 立即註冊
查看: 186|回復: 17

excel vba 數字排序

[複製鏈接]
發表於 2018-9-12 17:25:32 | 顯示全部樓層 |閱讀模式
階層        項次代碼
3        000100010004
4        0001000100040001
5        00010001000400010001
6        000100010004000100010001
6        000100010004000100010002
6        000100010004000100010003
6        000100010004000100010004
4        0001000100040002
5        00010001000400020001
6        000100010004000200010001
6        000100010004000200010002
6        000100010004000200010003
6        000100010004000200010004
6        000100010004000200010005
4        0001000100040003
5        00010001000400030001
6        000100010004000300010001
6        000100010004000300010002
6        000100010004000300010003
6        000100010004000300010004
6        000100010004000300010005
excel vba能達成依階層排序嗎?
第3階12碼數字
第4階16碼數字
第5階20碼數字
第6階24碼數字
回復

使用道具 舉報

發表於 2018-9-12 17:48:26 | 顯示全部樓層
您好,
     方便上傳檔案,並說明處理前/處理後/處理規則嗎?
回復 支持 反對

使用道具 舉報

 樓主| 發表於 2018-9-13 11:38:32 | 顯示全部樓層
上傳EXCEL檔案
檔案內容只排序至112列
規則:
讀取階層數自動產生項次代碼
第3階12碼數字
第4階16碼數字
第5階20碼數字
第6階24碼數字
第7階28碼數字
第8階32碼數字
各階採遞增方式
謝謝!!

電氣 -DIY詳細表_in.xls

410.5 KB, 下載次數: 41

回復 支持 反對

使用道具 舉報

 樓主| 發表於 2018-9-13 17:30:51 | 顯示全部樓層
掛一個已經整理好的檔案
謝謝!!

洗機設施工程.xls

136.5 KB, 下載次數: 23

回復 支持 反對

使用道具 舉報

發表於 2018-9-13 17:49:10 | 顯示全部樓層
plancad 發表於 2018-9-13 17:30
掛一個已經整理好的檔案
謝謝!!

您好,
     我看不太懂您說的規則,是否可以說明詳細一點.
excel20180913_01.jpg

1.這張是處理前嗎?

excel20180913_02.jpg

2.階層是處理後嗎?


中間是怎麼產生出來的.

回復 支持 反對

使用道具 舉報

 樓主| 發表於 2018-9-14 15:57:54 | 顯示全部樓層
excel20180913_02.jpg 是原始資料
階層是處理前先排好,讀取階層數後自動產生項次代碼
例:讀取階層數為4時,產生0001000100040006 共16碼 0006可由user指定 例如指定從3排序,則產生0001000100040003 共16碼
讀取階層數為5時為第4階之下一階,將0001000100040006結合0001為00010001000400060001(20碼)
再讀取下一個階層數為5時,將0001000100040006結合0002為00010001000400060002(20碼)
數字遞增
讀取階層數為6時將上一階(第5階)00010001000400060001結合0001為000100010004000600010001(24碼),繼續讀取階層數繼續自動產生項次代碼     數字遞增
同樣讀取階層數為7時將上一階(第6階)結合0001  下一個階層數為7時結合0002    數字遞增

回復 支持 反對

使用道具 舉報

發表於 2018-9-14 16:24:15 | 顯示全部樓層
plancad 發表於 2018-9-14 15:57
excel20180913_02.jpg 是原始資料
階層是處理前先排好,讀取階層數後自動產生項次代碼
例:讀取階層數為4時 ...

我大概看懂了.您的第一筆是自己輸入.
第二筆的階層比前一層多,就自動補上0001
第三筆的階層跟前一層一樣,就最後4碼自動累加1
.....
第N筆的階層比前一筆少,就自動往前找到最後找到前一筆相同階層的最後1筆的最後4碼自動累加1
是這樣嗎?
回復 支持 反對

使用道具 舉報

 樓主| 發表於 2018-9-17 09:51:30 | 顯示全部樓層
imingho 發表於 2018-9-14 16:24
我大概看懂了.您的第一筆是自己輸入.
第二筆的階層比前一層多,就自動補上0001
第三筆的階層跟前一層一樣, ...

是的
在第一個上傳檔案內有將近2千列資料,以人工處理太浪費時間且無效率
才想寫程式來處理
另階層數通常是3~8   000100010006(12碼)~00010001000600010001000100010001(32碼)
有時會是1~5 0006(3碼)~00060001000100010001(20碼)
有時會是3~8
所以儲存資料之array數會變動
麻煩啦
謝謝

回復 支持 反對

使用道具 舉報

 樓主| 發表於 2018-9-17 10:24:33 | 顯示全部樓層
更正
...
...
有時會是3~7
所以儲存資料之array數會變動
麻煩啦
謝謝
回復 支持 反對

使用道具 舉報

發表於 2018-9-17 15:50:24 | 顯示全部樓層

您好,
     這樣您可以
用一個迴圈,一個陣列,及if來判斷目前的值是否大於等於或是小於.
1.等於時
將前一個值取出最後4碼加1再與前面的字串合併.
2.大於時
取出前一個值,再後面加上0001
並加前一個值的狀態存到陣列中
3.小於時
從陣列中取出之前的值,再加1

回復 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

 ㄚ母滴雞湯
 員林香純滴雞精

Archiver|手機版|小黑屋|彰化一整天的論壇(Excel,Office)  |网站地图

GMT+8, 2018-11-14 17:50 , Processed in 0.153363 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表