返回列表 上一主題 發帖

[發問] 求助~~用VBA製作一個資料尋找~資料搬移的方法~~

本帖最後由 register313 於 2012-5-13 23:04 編輯

回復 1# ji12345678

發問須知:
1.發問者請上傳EXCEL壓縮檔(小學生也可以)
2.配合EXCEL檔請把功能說明清楚

幫助自己!也給答題者一個方便!
  1. Sub xx()
  2. With Sheets("歷年成績")
  3.   Set Rng = .Range("A3:A" & .[A65536].End(xlUp).Row)
  4.   Rng.Interior.ColorIndex = 0
  5.   For C = 2 To .[IV1].End(xlToLeft).Column
  6.     Sh = .Cells(1, C) & .Cells(2, C)
  7.     For S = 1 To Sheets.Count
  8.       If Sh = Sheets(S).Name Then
  9.       For Each A In Rng
  10.         X = Application.VLookup(A.Value, Sheets(Sh).[A3:B65536], 2, 0)
  11.         If Not IsError(X) Then A.Offset(0, C - 1).Value = X
  12.         If Application.CountIf(Rng, A) > 1 Then A.Interior.ColorIndex = 3
  13.       Next
  14.       End If
  15.     Next S
  16.   Next C
  17. End With
  18. End Sub
複製代碼

TOP

回復 3# toxin
  1. Sub xx()
  2. '設定以下在歷年成績工作表之下工作
  3. With Sheets("歷年成績")
  4.   '設定歷年成績中A3~A欄最後一列為Rng範圍
  5.   Set Rng = .Range("A3:A" & .[A65536].End(xlUp).Row)
  6.   '清除Rng範圍之底色
  7.   Rng.Interior.ColorIndex = 0
  8.   '迴圈1:C=2~第1列最後1欄之列號(第1列有值的範圍)
  9.   For C = 2 To .[IV1].End(xlToLeft).Column
  10.     'Sh=B1&B2,C1&C2,D1&D2(設定學年度學期考次名稱)
  11.     Sh = .Cells(1, C) & .Cells(2, C)
  12.     '迴圈2:S=1~最後一張工作表之數量
  13.     For S = 1 To Sheets.Count
  14.       '若(學年度學期考次名稱)=(工作表名稱)則執行迴圈3
  15.       If Sh = Sheets(S).Name Then
  16.       '迴圈3:A=A3~A欄最後一列之值
  17.       For Each A In Rng
  18.         '查A(姓名)在相對(學年度學期考次)工作表A3~A65536之位置,找到後傳回第2欄之值(分數)
  19.         X = Application.VLookup(A.Value, Sheets(Sh).[A3:B65536], 2, 0)
  20.         '若傳回值(分數)不是錯誤則A(姓名)向右偏移C-1欄後填入分數
  21.         If Not IsError(X) Then A.Offset(0, C - 1).Value = X
  22.         '若A(姓名)在A3~A欄最後一列重覆出現,則填入紅色底色
  23.         If Application.CountIf(Rng, A) > 1 Then A.Interior.ColorIndex = 3
  24.       Next
  25.       End If
  26.     Next S
  27.   Next C
  28. End With
  29. End Sub
複製代碼

TOP

        靜思自在 : 一個人的快樂.不是因為他擁有得多,而是因為他計較得少。
返回列表 上一主題