foxcat99
2002-02-03, 01:52 AM
:confused:
請問,要如何才能解決下面例子的問題咧,請高手大大們...幫助求救無門ㄉ我ㄅ!
ex.
證券代碼 年月 報酬率
(%)
1101 台泥 Jan-83 -6.12
1102 亞泥 Jan-83 -6.3
1103 嘉泥 Jan-83 1.1
1104 環泥 Jan-83 -4.55
1107 建台 Jan-83 -4.3
1108 幸福 Jan-83 2.33
2105 嘉泥 Jan-83 1.1
3358 環泥 Jan-83 -4.55
...
...
要怎樣「刪除」表中第二欄(證券代碼)重覆出現公司的整列資料,並且僅保留其中一組資料?
比方說:嘉泥這家公司出現了二次,但只要刪除其中一列的資料(任一列皆可),如上面八筆資料中,刪除後的結果,如下:
1101 台泥 Jan-83 -6.12
1102 亞泥 Jan-83 -6.3
1103 嘉泥 Jan-83 1.1
1104 環泥 Jan-83 -4.55
1107 建台 Jan-83 -4.3
1108 幸福 Jan-83 2.33
...
...
請問有蝦米方法口以快速地完成咧~~~
因為醬子的檔案...總共有100個耶~~~
所以方法愈快速愈好...拜託拜託...!
(PS.檔案如附件)
eumilk
2002-02-03, 02:44 AM
最初由 foxcat99 發表
:confused:
請問,要如何才能解決下面例子的問題咧,請高手大大們...幫助求救無門ㄉ我ㄅ!
ex.
證券代碼 年月 報酬率
(%)
1101 台泥 Jan-83 -6.12
1102 亞泥 Jan-83 -6.3
1103 嘉泥 Jan-83 1.1
1104 環泥 Jan-83 -4.55
1107 建台 Jan-83 -4.3
1108 幸福 Jan-83 2.33
2105 嘉泥 Jan-83 1.1
3358 環泥 Jan-83 -4.55
...
...
要怎樣「刪除」表中第二欄(證券代碼)重覆出現公司的整列資料,並且僅保留其中一組資料?
比方說:嘉泥這家公司出現了二次,但只要刪除其中一列的資料(任一列皆可),如上面八筆資料中,刪除後的結果,如下:
1101 台泥 Jan-83 -6.12
1102 亞泥 Jan-83 -6.3
1103 嘉泥 Jan-83 1.1
1104 環泥 Jan-83 -4.55
1107 建台 Jan-83 -4.3
1108 幸福 Jan-83 2.33
...
...
請問有蝦米方法口以快速地完成咧~~~
因為醬子的檔案...總共有100個耶~~~
所以方法愈快速愈好...拜託拜託...!
(PS.檔案如附件)
在要刪除的那列上按右鍵.選刪除列.存檔
foxcat99
2002-02-03, 03:12 AM
最初由 eumilk 發表
在要刪除的那列上按右鍵.選刪除列.存檔
可是每一個檔案有上萬筆資料,就是有上萬列資料,
可能第一列和第9981列公司相同
第35列和第8575列公司相同
..............
但是我不知相同的公司在第幾列,
那要怎要刪除,一個一個找,不是要找好幾天???
有比較快速的方法嗎???
感激您的回覆,但有更好的方法嗎??
謝謝
最初由 常上此站的動物 發表
1.先將代碼(台泥、亞泥....)這欄排序
2.假設台泥這個儲存格在b2,則執行此巨集
你可以看看此檔,1個按鈕可完成工作:下載 (http://home.kimo.com.tw/spang.tw/just_do_it.zip) [/B]
因為foxcat99先生曾說過:一個檔案內有上萬筆資料,
而 MR.常上此站的動物 所提供的巨集,基本上是採逐筆比對、刪除的方式來做;
假設那一萬筆資料中,實際上只有38種的話,那可能要比對、刪除一萬多次。
如果採取下列方式的話,只要做38-1次的刪除動作或更少(如果有些資料只有一筆的話)
敬請參考:
Sub K刪除多餘列()
Application.ScreenUpdating = False
Set CR = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell): CR.Activate
Rn = CR.Row
Range(Cells(2, 1), Cells(Rn, 4)).Sort Key1:=Range("B2"), Order1:=xlAscending, Header:=2, _
OrderCustom:=1, MatchCase:=False, Orientation:=1
a = 2
Do While a < Rn
Rcnt = WorksheetFunction.CountIf(Range(Cells(a, 2), Cells(Rn, 2)), Cells(a, 2))
If Rcnt > 1 Then
Rows(a + 1 & ":" & a + Rcnt - 1).Delete Shift:=xlUp
Rn = Rn - (Rcnt - 1)
a = a + 1
Else
a = a + 1
End If
Loop
Range(Cells(2, 1), Cells(Rn, 4)).Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=2, _
OrderCustom:=1, MatchCase:=False, Orientation:=1
Application.ScreenUpdating = True
End Sub
P.S. 我原本擔心此做法有一可能的致命傷,假設資料埵P時存有『台達』、『台達電』的話,
在計算含有『台達』的筆數時,不知道會不會連『台達電』的筆數也算進去,
經實驗發現是多擔心了。
另,foxcat99有提到說有很多個來源檔(txt)
其實也可以用巨集一次匯入很多個txt檔(變成sheets(1)~sheets(n))
然後再用巨集循sheet一次整理到好...
以上,謹祝Leon生日快樂~
Happy Birthday~!
To: Mr. 常上此站的動物
是啊!^-^
昨天的壽星Leon就是Leon Chou 兄(我應該尊稱他為『師』)
不好意思,因為他的悄悄話功能也是disable的...
所以我就『公區私用』祝他生日快樂囉!
另,昨天那個巨集(刪除多餘列)的模式,只要稍加修改的話,
還可以用在: (1)快速蒒出(留下)某一種(or某些)資料
(2)快速去掉(刪除)某一種(or某些)資料
有空試試看吧! ;)
foxcat99
2002-04-12, 03:21 AM
最初由 常上此站的動物 發表
1.由於Leon Chou兄熱心助人,使他桃李滿天下,我也常得到其教化,我也應該尊稱他為『師』!!
2.我會試著去修改!!謝謝您!!
非常感謝.....
自從這次之後....
現在努力學VBA....
希望大家指教一番....