沒錯EXCEL 單一分頁檔 只能處理 65536 (可是16位元 FF值不是 65535嗎為啥會多1 ?? )
為什麼會有這麼有兩百萬筆這麼多 就是公司把一季三個月的資料做成單一個資料檔
所以五年要整理的檔案就有20個 剛看到檔案時 想說SOSO啦 五分鐘搞定 結果從早上
做到現在 還沒弄完 我真的太小看它了

Mitchell Chen 的想法跟我很像 所以先來試試看
說到IT 忍不住抱怨一下 我們公司的IT 平常都很高傲 但真的要他們做事時
都說太簡單了 不幫我們做 (...太簡單 那你領公司的錢可以不用做哦!!)
不然就是做的不是我們要的 (要改理由還不少 說我們小姐不會用 (原始碼在妳手上 頂多打包一次不就得了 )
今天更過份 說要幫忙 結果中午 就請假開溜 (我看是不會寫 藉口烙跑......)
對不起 我並不是說所有IT的人都是這樣啦!!只是我們家的IT實在是....不予置平
協力廠商的IT人員 每個人都不錯 而且都很專業 做事情都很有效率 (唉 今天他們都放假.....找不到救兵
)homoso wrote:
最近因為公司某些協力...(恕刪)
可能來不及了,不過還是可以練習一下...
我在假設的 Excel 中:
A B C D E
1 a111 000 a111AAA 如後述公式 000AAA
2 a333 222 a333BBB 複製 D1 222BBB
3 a555 444 a777CCC 複製 D1 666CCC
4 a777 666 a555DDD 複製 D1 444DDD
在 D1 欄使用公式:
=SUBSTITUTE(C1,LEFT(C1,4),VLOOKUP(LEFT(C1,4),$A$1:$B$4,2,0))
這樣子就可以得到正確的結果 (如 E 欄)
至於為什麼要在 A 欄的數字前加一個 a 開頭,經過測試,上述函數
在 Excel 的字串與數字中,似乎有些異常會發生,若統一轉成字串
即無此問題。
原發文者的料號編碼應該只要首碼非數字就行了。
(如果不幸為數字怎麼辦?只要像我加上一個 a 就行了,之後再去掉...)
homoso wrote:
謝謝 Mitchel...(恕刪)
因為開始值是0,所以 0~65535共65536
話說回來
你這種東西本來就是用程式去做就很簡單
提出要IT支援的申請
管他說是太簡單還是太困難
如果你是職員就跟你主管提出
如果你是主管就去和IT主管溝通
有的IT很好混沒錯
但是該做的事還是要做
小妹實在太累了 腦筋都打結了 目前是想到了大約的式子
但能不能用 明天再試了
大約的式子是
=IF(AND($C3="",$D3=0),"",IF((AND($D3="008",LEFT($C3,1)="B")),VLOOKUP(LEFT($C3,1)&$D3,TYPE,2,0),VLOOKUP($D3,TYPE,2,0)))
但還沒驗證 所以能不能用 但多虧了Mitchell Chen 提到VLOOKUP 的參數
隱約捉到模糊的慨念 但還是想不出來 明天打電話問問看老師好了
另外感謝Sisizy 的提義 我本身就是主管了 但部門間的溝通不良
和能推事就推事的態度不是一日之寒所造成的 外加公司一味的相信學歷
跟據我的觀查 我們家的IT 根本連VB都不會寫 (因為他的程式都是廠商幫他寫 然後再轉來給我)
但畢竟不是自己部門的人哪能干涉呢
感覺 Mobile01 上的熱心人士不少 高手更是如雲 這麼晚了仍有許多人幫忙回答
感謝 csh vane es4241 Mitchell Chen 等人的幫忙
不好意思 因為實在太晚了 只好明天加班再來做了 先回家休息了 謝謝大家 ^^ 晚安
homoso wrote:
再次謝謝 Mobil...(恕刪)
VLOOKUP有其限制性 需要依照大小排列
所以 我才會說你要先加上資料編碼(第一頁)
然後 我會建議你
確定你的做法之後 錄製巨集 然後重複做個20次 就可以囉...
巨集如何寫自動回圈 這我也不大熟 LOOP N+1 這我從來沒寫過 看看有沒有達人吧
基本上 如果你是主管的話 那 這種東西就丟給IT 不然就是先把需求丟出去 然後自己慢慢做
如果做不出來 才顯出IT的爛...
辦公室文化裡面 總有人要被開刀 才會有人痛 你是主管 這種事情不是你該做的
老闆聰明 員工閒閒 老闆閒閒 員工聰明
離題了....不過 這真的是管理學裡面很深奧的人性啊!!
The problem of government is government-Ronald Reagan
看到這種玩意兒,不動動手都覺得手癢
我也試著嚐試了一下
想法跟vane兄的差不多
但是我不是用vlookup,我採用的函數是match
而且也發生跟vane兄一樣的情形,就是遇到106會出問題
我研究了一下函數
還有目前homoso所提供的資料表
我做了一點狀況的修正
目前是可以完全符合homoso的要求
但是我不知道對照表示不是還有例外的狀況
如果還有,則必須再找出例外的狀況
容我說明一下:
首先,homoso您要先把對照表裡的所有資料都轉換成文字
再來要以遞增排序
這些做好之後,就可以依據我上傳的檔案試看看
我所採用的方式就是直接拿欲代換的編碼直接去跟對照表比較
然後他會找到最接近的號碼,並取出對應的位置(列號)
在測試中,幾乎都會找到,但是遇到106與1067時就會出錯,那是因為第四碼的英文字會大過"7"
例如106L大於1067,當然也就大於106,但是又小於1078,所以excel就取出1067
上面的說明是match本身函數的特性,詳細的內容請參照excel裡的函數說明
但是因為對照表有排序過,所以替換發生錯誤的時候,應該都是位置差1
只要比對一下,若替換失敗(substitute函數錯誤的話,僅秀出跟原來的字串一樣),只要將參照的位置-1就可以了
以目前我能夠拿到的資料,做的判斷就只能這樣了,如果複雜度就是這樣話,我想應該就ok了
我想,以這樣的邏輯去處理,其實vlookup也應該可以用,因為match函數跟vlookup在比對字串上得方法是類似的
希望對你有幫助
取代完再刪掉就好了
1.取出數字部份
2.比對舊代號
3.結合新代號和英文字部份
我直接作在Excel裡
參考看看
附加Excel文件表: 200610/mobile01-ad0a562d3df5868e571fe78bc209caf3.xls
左下角有一個取代的按鈕,壓下去後,會將新的代碼貼到G這一欄
主要是比對有沒有錯誤
我試過應該沒有問題
廢劍一式忘前生 神舍不荒盡殘年
內文搜尋




























































































