標題:
[發問]
求助~~用VBA製作一個資料尋找~資料搬移的方法~~
[打印本頁]
作者:
ji12345678
時間:
2012-5-13 18:56
標題:
求助~~用VBA製作一個資料尋找~資料搬移的方法~~
我想要用VBA寫一個 歷年成績 的匯入工具。
(1)要從95年下學期期中考工作表 匯到指定的儲存格內。
(2)像 劉致淵 ;假如我不小心在 歷年成績 內建了兩個劉致淵的名子,則兩筆都要能填入 劉致淵歷年成績。
(3)如果程式執行找 江清宜 時,要有方法 能回傳它的列的值 為10 。
(4)另外一個按鈕功能是~~能把所有重覆的名子~儲存格變成紅色底。
(5)我目前的寫法是用兩個for迴圈找,
(a) 先取出 95年下學期期中考 A3內人名王小明-
(b)再到歷年成績內用for迴圈從A3、A4、A5、A6…往下找,找到再搬資料。
(C)再取出 95年下學期期中考 A4內人名鄭阿娟。
(D)再到歷年成績內用for迴圈從A3、A4、A5、A6…往下找,找到再搬資料。
就是以前學校學的那套
但當資料很大時,發覺它要一些時間才跑完。
覺得沒效率
故求助~~各位先進指導有無其他 較好的~~~方法,可以改善 謝謝~~~~感恩~~~~ ^^ 。
[attach]10933[/attach]
作者:
register313
時間:
2012-5-13 19:04
本帖最後由 register313 於 2012-5-13 23:04 編輯
回復
1#
ji12345678
發問須知:
1.發問者請上傳EXCEL壓縮檔(小學生也可以)
2.配合EXCEL檔請把功能說明清楚
幫助自己!也給答題者一個方便!
Sub xx()
With Sheets("歷年成績")
Set Rng = .Range("A3:A" & .[A65536].End(xlUp).Row)
Rng.Interior.ColorIndex = 0
For C = 2 To .[IV1].End(xlToLeft).Column
Sh = .Cells(1, C) & .Cells(2, C)
For S = 1 To Sheets.Count
If Sh = Sheets(S).Name Then
For Each A In Rng
X = Application.VLookup(A.Value, Sheets(Sh).[A3:B65536], 2, 0)
If Not IsError(X) Then A.Offset(0, C - 1).Value = X
If Application.CountIf(Rng, A) > 1 Then A.Interior.ColorIndex = 3
Next
End If
Next S
Next C
End With
End Sub
複製代碼
作者:
toxin
時間:
2012-5-15 13:06
回復
2#
register313
register313大大
可以麻煩寫一下註解嗎??
小弟也有需要類似的功能
但是看不太懂= =
煩請抽空.....
作者:
register313
時間:
2012-5-15 14:52
回復
3#
toxin
Sub xx()
'設定以下在歷年成績工作表之下工作
With Sheets("歷年成績")
'設定歷年成績中A3~A欄最後一列為Rng範圍
Set Rng = .Range("A3:A" & .[A65536].End(xlUp).Row)
'清除Rng範圍之底色
Rng.Interior.ColorIndex = 0
'迴圈1:C=2~第1列最後1欄之列號(第1列有值的範圍)
For C = 2 To .[IV1].End(xlToLeft).Column
'Sh=B1&B2,C1&C2,D1&D2(設定學年度學期考次名稱)
Sh = .Cells(1, C) & .Cells(2, C)
'迴圈2:S=1~最後一張工作表之數量
For S = 1 To Sheets.Count
'若(學年度學期考次名稱)=(工作表名稱)則執行迴圈3
If Sh = Sheets(S).Name Then
'迴圈3:A=A3~A欄最後一列之值
For Each A In Rng
'查A(姓名)在相對(學年度學期考次)工作表A3~A65536之位置,找到後傳回第2欄之值(分數)
X = Application.VLookup(A.Value, Sheets(Sh).[A3:B65536], 2, 0)
'若傳回值(分數)不是錯誤則A(姓名)向右偏移C-1欄後填入分數
If Not IsError(X) Then A.Offset(0, C - 1).Value = X
'若A(姓名)在A3~A欄最後一列重覆出現,則填入紅色底色
If Application.CountIf(Rng, A) > 1 Then A.Interior.ColorIndex = 3
Next
End If
Next S
Next C
End With
End Sub
複製代碼
作者:
toxin
時間:
2012-5-15 15:17
回復
4#
register313
感謝register313大大抽空寫註解
小弟這兩天研究一下有問題再麻煩大大了
感恩
作者:
ji12345678
時間:
2012-5-16 16:36
謝謝各位先進熱心指教,來到這�堻o個論譠真的學到好多,感謝~~~。
作者:
p6703
時間:
2012-5-17 00:17
藉著各位提問及高手的不吝解答,讓有心學習的能提升自己EXCEL的功力,很高興能來這論壇^^
作者:
alumi
時間:
2012-5-17 13:28
感謝分享.
建議變數在使用之前, 進行宣告.
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)