返回列表 上一主題 發帖

大筆資料換行處理與數字文字分隔問題

大筆資料換行處理與數字文字分隔問題

各位前輩好,

小弟目前遇到一個問題,

附上檔案連結:
點擊下載

檔案說明如下:
A欄的資料格式為示意,實際上有非常多筆,
資料格式為文字+數字
(文字全部打"文字"僅為示意文字部份之用,資料的文字內容各不相同,不是說資料真的都是以"文字"開頭加數字)
,文字和數字的長度均不固定.
文字+數字視為一筆資料,
不同筆資料之間以空格或換行隔開,比如說三筆資料,
那就是文字+數字 文字+數字 文字+數字,
空格也有可能是換行.
希望達到的效果是把A欄所有的資料的文字部份與數字部份區隔開來,
放在儲存格內.

文字放在F欄,

數字的部份,

若數字開頭不是1,則放在G欄,並且在數字開頭加上G1儲存格內填入的數字.

G1由使用者手動輸入,若為空白,則數字開頭不加任何數字,直接放在G欄.

若數字開頭為1,則直接將數字不做任何修改放在I欄.


目前的這個檔案可以達到類似效果,

但有以下缺點:

1.無法刪除重複號碼.希望可以有比對並刪除重複號碼的效果.

2.運算過慢.因為採用巨集與公式合併的方式,
把A欄不同筆資料做換行處理並貼至E欄的程式碼是在網路上詢問高手時得到的答案,
我只是轉貼過來用而已,這部份其實在運作上沒有問題.

將數字與文字分開,則是我從網路上查找到的高手所寫的公式,
把它套過來使用,

但是我只把公式下拉了五百多筆,
光是這樣子運算就很花時間,所以這個檔案無法處理大量的資料,

不知是否有前輩願意指點該如何改成全部巨集的版本,
提高它的運算速度並讓它可處理大量的資料,

十分感謝.

回復 2# 准提部林


非常感謝淮提部林前輩熱心無私提供程式碼,

可能是小弟描述問題時表達不清楚造成誤會,不好意思,

希望的效果是若數字開頭不是1才加上G1儲存格內的數字,

以後小弟會儘量將問題再做更具體的描述,請前輩見諒.


小弟擅自將第十二行If Left(T, 1) = "1"改為<>"1"之後,

確實達到期望效果,速度真的比原文我附的檔案快太多了,

而且跟先前程式相比,

前輩所提供的程式碼還加上了刪除重複數字及判別文字有無與數字相連等強大功能,可大幅縮短資料的比對與整理時間,

再次感謝前輩.


其實小弟在第八行之後就已經完全無法理解了,
若方便的話是否冒昧請教前輩,

有關第八行程式碼的部份,
If Not IsNumeric(Right("x" & B, i)) Then v = i - 1: Exit For

這個Right("x" & B, i)的部份,
為何可以使用"x" & B,小弟不太理解這個"x"的用法,
不知是否能夠冒昧麻煩前輩不吝指點迷津,十分感謝.

TOP

回復 4# 准提部林

真的十分感謝淮提部林前輩的熱心指點.

小弟是否方便再進一步詢問,
關於第11行至第14行,

小弟有試著去網上搜索相關資料,
其中關於冒號的部份,

在論壇上已有前輩做詳細的解說:
http://forum.twbts.com/viewthrea ... ighlight=%B0%7D%A6C

但dictionary object的部份,
小弟不太理解xD(T) > 0這種寫法,
因網路上查到的會需要用item或是items方法.
另第12行,
小弟也不理解何以將 Left(T, 1) = "1"
改為Left(T, 1) <> "1"之後,
就可以將顯示結果對調,因為我並沒有去更動u的值.

其它部份,小弟苦思良久,找尋資料後仍不得其解,


小弟斗膽,

是否能夠冒昧請求前輩略為解釋

第11行至第14行的意義,

還望前輩能夠不吝賜教,十分感謝.

TOP

回復 6# 准提部林


真的非常感謝准提部林前輩願意花時間一行一行指點小弟這樣不長進的新手,
小弟不勝感激.

能加入這個論壇實在是太好了,一定努力學習.

再次感謝准提部林前輩的無私協助,真的很謝謝您.

TOP

        靜思自在 : 謊言像一朵盛開的鮮花,外表美麗,生命短暫。
返回列表 上一主題