- 帖子
- 967
- 主題
- 0
- 精華
- 0
- 積分
- 1001
- 點名
- 0
- 作業系統
- WIN XP
- 軟體版本
- OFFICE 2003
- 閱讀權限
- 50
- 性別
- 男
- 來自
- 台北
- 註冊時間
- 2010-11-29
- 最後登錄
- 2022-5-17
 
|
4#
發表於 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
複製代碼 |
|