暱稱: 温奇 頭銜: 議論者
中學生
- 帖子
- 104
- 主題
- 5
- 精華
- 0
- 積分
- 110
- 點名
- 0
- 作業系統
- win7
- 軟體版本
- Office2007
- 閱讀權限
- 20
- 性別
- 男
- 註冊時間
- 2017-11-14
- 最後登錄
- 2019-4-30
 
|
4#
發表於 2018-8-1 20:55
| 只看該作者
回復 3# GBKEE
Option Explicit
Sub Ex()
Dim Rng As Range, D As Object, E As Range
With Sheets("Form")
Set Rng = .Range(.[d2], .Range("d" & .[a2].End(xlDown).Row)) '符合運動時間的列位
End With
Rng = "=IF(rc[-1]-rc[-2]>=TIMEVALUE(""02:00:00""),""符合"",""不符合"")" '寫上公式 (健身房離開時間-健身房進入時間>=02:00:00)
Rng.Value = Rng.Value '公式轉為值
Set D = CreateObject("Scripting.Dictionary") '字典物件
For Each E In Rng 'Rng.Cells 的迴圈
D(E.Offset(, -3).Text) = E.Text '關鍵字-> E.Offset(, -3)為姓名帶入 (符合/不符合)
Next
'重設Rng變數
Set Rng = Workbooks.Open("\\Test\B.xlsx").Sheets("Time").Range("A:A").SpecialCells(xlCellTypeConstants)
For Each E In Rng
If D.EXISTS(E.Text) Then E.Offset(, 1) = D(E.Text) 'E為A欄 -> E.Offset(, 1)= B欄
'字典物件的Exists 方法 :字典物件的關鍵字存在時為TTrue, 執行(Then .... )
Next
Rng.Parent.Parent.Close False
'Rng.Parent 是Sheets("Time")
'Rng.Parent.Parent為Workbook
End Sub
GBKEE超板
不好意思,我有修正一些判斷式,
需要比對B檔案中的運動時間資料是否符合,
當沒有這個人員時回傳"沒會員",
並在A檔案中E欄未填入該員本次運動時間。- Option Explicit
- Sub ex()
- Dim S As Variant, Wb As Workbook, Wb_Name As String
- Dim n, m As Long
- Application.ScreenUpdating = False
- Set Wb = Workbooks.Open("\\TW100019913\Access\B.xlsx")
- For n = 2 To Application.CountA(Workbooks("A.xlsm").Sheets("Form").Range("A:A"))
- S = Application.WorksheetFunction.Text(Workbooks("A.xlsm").Sheets("Form").Cells(n, 3) - Workbooks("A.xlsm").Sheets("Form").Cells(n, 2), "dd hh:mm:ss")
- Workbooks("A.xlsm").Sheets("Form").Cells(n, 5) = S
- For m = 2 To Application.CountA(Wb.Sheets("Time").Range("A:A"))
- If Workbooks("A.xlsm").Sheets("Form").Cells(n, 1) = Wb.Sheets("Time").Cells(m, 1) Then '判斷B.xlsx有沒有人員資料
- If S >= Application.WorksheetFunction.Text(Wb.Sheets("Time").Cells(m, 2), "dd hh:mm:ss") Then '比對人員本次運動時間是否達到標準
- Workbooks("A.xlsm").Sheets("Form").Cells(n, 4) = "足夠"
- Exit For
- Else
- Workbooks("A.xlsm").Sheets("Form").Cells(n, 4) = "不足"
- Exit For
- End If
- Else
- Workbooks("A.xlsm").Sheets("Form").Cells(n, 4) = "沒會員"
- End If
- Next
- Next
- Wb.Sheets("Time").Parent.Close False
- End Sub
複製代碼 附上檔案 |
-
-
Access.rar
(25.1 KB)
|