PCDVD數位科技討論區

PCDVD數位科技討論區 (https://www.pcdvd.com.tw/index.php)
-   疑難雜症區 (https://www.pcdvd.com.tw/forumdisplay.php?f=34)
-   -   excel vlookup運算效率問題 (https://www.pcdvd.com.tw/showthread.php?t=1079979)

whatsnew 2015-06-08 03:45 PM

excel vlookup運算效率問題
 
我有一張大表格,約有50幾萬個rows,第一個column是名稱,第二個是數值
大約像這樣
A1 A2
name1-1 value1
.
.
name1-2 value2
.
.
.
name1-1,1-2沒有連續,name1-1和name1-2為一組
我的運算需要用到name1-1,1-2後面的數值
方法是用vlookup去抓數值,不過這樣每組名稱都找過一次很花時間(name1,name2...),找50萬次= =
不知道有沒有可以增加運算速度的方法
還是像這類形的運算還是用程式跑會比較快呢?
謝謝

chenyy 2015-06-08 04:23 PM

這應該可以解決你的問題

http://stackoverflow.com/questions/...ives-to-vlookup

資料到一定的量建議在Access或SQL Server Express處理會比較有效率.
但本身要學一點資料庫的東西就是了.

whatsnew 2015-06-08 06:28 PM

謝謝你的回覆
我不是很懂資料庫跟VBA
但我試著用了一下
結果有出來,但VBA那方法好像跑更久@@

cxh 2015-06-08 09:35 PM

先問 NAME1 , Name2 是否有共通原則?
長度,或是某部份一樣?

e.g:
whatsnew-1,AAAAAA
whatsnew-2,CCCCCC

把同一組資料,編一組 MD5 碼..
VBA MD5 http://rghost.net/52431889?r=3821
VLOOPUP 即可找到,變成 25萬筆.

再來..
VBA也可以用SQL

http://kimbalko-chi.blogspot.tw/201...el-vba-sql.html

你參考一下..
SQL IN VBA 這已有實作過,

MD5那段,你要自己試一下..

whatsnew 2015-06-09 01:21 AM

謝謝你的回覆
名稱依5個層級來名命的,我是有想過用if將類似的分一起,但我怕會有點危險,在人工操作下選錯之類,所以才直接用全放一起來演算的
而且以我的例子再多1個那5個層級中的變數可能就要到excel row的上限了
可能真的要換軟體就是......

另外想請問blog中的第二的範例它要找的資料只有D3那一筆
請問要擴大範圍時要怎麼應用呢?例如我要一次找100筆之類
謝謝


所有的時間均為GMT +8。 現在的時間是11:13 AM.

vBulletin Version 3.0.1
powered_by_vbulletin 2025。