最近因為公司某些協力廠商變更 原物料的來源當然就會變更 而各家公司的物料編法就會不同
相對的舊的文件中舊的代號格式就不能用了 就要換成新的
公司是有相對應的表 (用EXCEL做的) 我知道可以用取代的方式 來更換
例如
00000AAAA --->11111AAAA (0要換成1 而A的部份不變 )

但現在問題來了 對換表 高達1176種 (-.-)
資料總計高達 2164875(筆) (五年的資料 加上手動KEYIN 錯誤很多下午機乎都在校正)
如果用取代的方法 可能今天我不能下班了
(明天國慶日耶 不過我沒想去"天XXX" 只想回家抱我可愛的枕頭)
我試過自動篩選然後再換 可是很慢 問了很多同事 沒有人會
我的表格大約如下

舊編號 新編號 舊的資料 需轉換成為
000 111 000AAA 111AAA
222 333 222BBB 333BBB
444 555 444CCC 555CCC
666 777 666DDD 777DDD

而且 不管是數字還是英文的部份長度都不一定一樣所以不能用 LEFT或MID切
(以前文件代號規則是哪個丫呆想出來的 )

因為小妹功力實在不夠 只好上來求助站上的高手了 請好心的人幫幫忙 或是給個提示
用什麼參數來寫好嗎 謝謝


homoso wrote:
最近因為公司某些協力...(恕刪)


你只是要將0取代成1,2取代成3...嗎?你說"不管是數字還是英文的部份長度都不一定一樣",那新資料的編號是共幾位?還是假設原本是000AA只要取代成111AA,而非111AAA?不太明白你的意思?
行路難,難重陳。行路難,難於山,險於水。行路難,不在水,不在山,只在人情反覆間。
不太懂你的意思,如果是單純數字切換可用SUBSTITUTE這個函數,但記得不要把換過與沒換的弄混在一起,如果轉換類型太多,可以寫巨集來作
真不好意思 小妹可能敘述太長了以致於太過複雜

文件的編碼長度為:12碼~17碼
開頭:都是數字格式
後面:都是英文格式

但數字和英文的字數是不一定都是一樣
現在就是要改換 數字的部份而保留文字的部份
我拿其中一件例子: (因該不會被公司告機密資料外流吧)

"7062545"PRTCCK
要換成
"800145"PRTCCK

英文的部份都不會去更動 只有改數字的部份

謝謝大大的幫忙 如果提供的資訊還不足的話 請再告訴小妹
homoso wrote:
真不好意思 小妹可能...(恕刪)


A1欄位:7062545PRTCCK
B2欄位鍵入公式:=SUBSTITUTE(A1,7062545,800145),按ENTER後欄位內容為800145PRTCCK
希望對你有幫助~
行路難,難重陳。行路難,難於山,險於水。行路難,不在水,不在山,只在人情反覆間。
由於你有1176種轉換,建議寫程式,先將轉換表排序寫成文字檔,再將EXCEL也寫成文字檔,然後寫一程式讀轉換表,然後再一筆一筆讀EXCEL數據,找出數字,去轉換表找是否有對應(這裏最好要用到一些技巧,不要傻傻每次都從1比到1176),光用EXCEL作1176次轉幾百萬筆數據會累死人的
感謝 vane 的幫助
目前小妹就是照您的方法來做
先用排序排出開頭一樣的方式 再拉欄位後再用SUBSTITUTE 來換掉我要換的字

但因為量實在太多多了 本來以為很簡單 但是做了發現很麻煩 因為要一筆筆對然後再貼
上新的值 SUBSTITUTE 才有辦法來取代

目前我是想到用 切開數字和英文和數字的方法 (LETF 和MID) 大致上可以切開 大部份的欄位
然後因為只有數字的部份會變 而英文字的部份不會變
再來把舊和新的 數字格式放在 A和B 欄
當我數字的值符合 A 的欄位時 自動帶入B 值 再來就是用 "&"連結B值和英文的欄位部份

(以前有看過老師用過 可是用什麼參數就是想不起來 老師我好想你啊 )
印像中要用到IF的判斷 如果A符合值 就代入 B值

附上我目前做的文件 部份格式範例(裡面有修改過了 才不致於洩漏公司的資料 請見諒)
附加Excel文件表: 200610/mobile01-329af929bd9c29b659ac15cdecd9abf8.xls

小妹的VB實在爛的不行 而且公司的EXCEL 禁用VB的語言所以 es4241 說的VB的部份可能不
太可行 另外轉成文字的部份可是再提示一點嗎??
homoso wrote:
真不好意思 小妹可能...(恕刪)


因為你有兩百多萬筆資料

用EXCEL跑的話 應該跑不了這麼多(excel可以用到這麼多筆嘛)

如果不會寫程式 可以叫IT幫忙寫的話 那就丟給IT吧

如果沒辦法 我建議用VLOOKUP這個函數去做

先做個對應表 然後做資料剖析 再把他結合回來

不過 因為你的編碼並不是那麼的整齊(12~17)

所以 你要從哪邊切 那是個很大的問題

如果全部都是17碼 然後全部都是切後六碼 這樣就很快了
(如果12碼前面可以全補零 後面都是固定六碼同理)

如果切開沒問題的話

我的建議是

1.先插入一行並且用流水號編上號碼
2.依照需要取代的編碼欄位由小到大排序
3.用VLOOKUP轉換
4.複製轉換後的值 然後貼到純文字檔案 然後全部取代tab

這是笨方法 不過 是一個不寫程式解決的蠢方法....因為我也不會寫程式啦....
The problem of government is government-Ronald Reagan
原始資料應該不是EXCEL檔吧!
這麼多的資料兌換,
應該要寫個小程式吧!
SORRY,我也不會,
不過幫你推一下。
我突然想到

如果你的廠商編碼都是英文

而物料號碼都是數字 是這樣嘛?

如果是的話 你全部取代數字為特定符號(笨一點 CTRL+H 1=>? 2=>?.......)
就可以算出你是第幾位開始要留下來(計算特定字元的數目函數)

這樣的話 你就可以用MID LEFT這種函數囉....




The problem of government is government-Ronald Reagan
關閉廣告
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!