恩..大致情況是假設目的工作表名為A
來源工作表則為B、C、D、E、F、G......等計百個以上
如此當我予從A工作表裡去模擬excel vlookup函數的方法時,去這些百個來源工作表找相同標題名稱(欄),卻不同列的資料時
想同高手們請教,您們都用何種方法來速決比對,找得後再貼入到目的A
我試了一堆,如陣列、或function..或vlookup
但感覺語法都挺亂的..
尤其當標題欄名一大堆時...若採用function
我必須先將標題欄內的名一一丟入到變數..然後再由VBA去回傳欄位的數值
因為VBA裡好像不能直傳回欄位的英文...如超過Z欄後..我就不知道要怎麼正確傳回欄位了
所以只能傳回欄位索引編號..
可是由於我有很多不同的工作簿,且常需要在不同的工作簿裡的內部工作表內去找先前已key過的資料..然後再複製貼到目的工作表內
由於欄位名稱在不同工作簿都不相同..也因此若我老在那重編程..實在快吃不消
無奈只好前來求救高手們有無好的方法可以快速解決..
在此真的也不知說些什麼好.
我只能誠心表達感謝與祝褔您們的幫助跟回覆.
再次說聲謝謝。

個人積分:278分
文章編號:84515927
文章段落

個人積分:1083分
文章編號:84520534

個人積分:278分
文章編號:84535946
et3x wrote:
以下欄位表示方式不知(恕刪)
恩,,不好意思我試著跑了下,感覺不太一樣的意思
放兩個大致的示意圖
工作表000是比較新的,而001則是先前的
000裡的欄位多了個配件,且此欄位是後續想到才做插入在其中的
這麼一來問題就來了,其它的身高啦、血型欄、專長欄等.....
事先都在001工作表內key過了
而000工作表只有輸入姓名的前提下,我想令其能自動往前去回朔看有沒有已key過的後欄位資料時,便將其自動對應到同欄位,且列裡的對應格.
這問題在處理欄位不變的前提下,其實也都好處理.
唯一麻煩的是,很多時候在後續的想法下,會在某些欄位中間再做插入的動作..如此
新的工作表若要用程式去抓舊工作表裡的資料時,若採寫死的方法
如sheets("000").cells(2,4)=sheets("001").cells(2,4)時
就會變成在工作表000的D2格裡填入B (正確填入的話,應該是要填入 查無 二字)
之所以會這樣請教的一個很大的原因出在,以往的工作表已有上百頁了
但新入的工作表,插入的欄位放在後欄位的話又感覺很不對..因為很多時必須左右欄一塊看會比較明瞭這新入欄位的用意在幹嗎
也因此還是得用插入的方法才會淺顯易懂..
唯麻煩的就在先前的上百個工作表,可能每隔幾個,其欄位就會有增減..
所以我目前的做法是採回圈先去抓標題列的名稱,然後取其欄位索引編號
再去用列,如劉備...這關鍵字來做搜索
這樣的好處是不易出錯,但問題也很囉唆..會變成每次都要宣告新變數來對新入的欄位做記欄位值的記錄..
而且若換另一個"工作簿"時,又會因標題列名不同,我又必須重搞一回了...= =
曾經用過用陣列的方式,先去抓標題列,然後再一一輸出..
這樣就可避免我自己一個個宣告變數,再來指定變數=什麼標題名時...如:
dim 身高col%,血型Col%,專長Col%
for i = 1 to cell(1,columns.count).end(xltoleft).column
if cells(1,i)="身高" then 身高Col=i
if cells(1,i)="血型" then 血型Col=i
...............
next
............
諸如以上...我光想到一堆標題名時就覺得頭大..
上回有試過用二維陣列來定位
但寫了一陣後,我有點忘了丟在哪去了..且語法久沒用,又生疏了
這問題實在很困惑..所以才來請高手們給個大致方向與指教。看能否省點時間自個在摸索。
以上內容繁瑣,也感謝諸位的不吝指教。謝謝


然後呢,可能再過幾天,劉備又會在最新的工作表裡跑出來了,所以這時就必須在偵測到劉備出現時,去補先前工作表裡有劉備這列的後部欄位內的有資料的值..這後面這裡都好處理,

問題就在每日的列裡,資料不會都是固定不變的,有時今天有的人名,明日可能就又沒有,後天可能又會跑出來了..所以才很麻煩,如果是用手工的..可知道那是道.....令人發瘋的手續,尤其是..有時資料變多時

為提供您更優質的服務,本網站使用cookies。若您繼續瀏覽網頁,即表示您同意我們的cookies政策。 了解隱私權條款