2011-04-18 92 views
0

我目前使用符合一定規則從一個片到另一個並返回一個值的公式。我遇到的問題是,如果兩張紙上的時間完全相同,它將只返回真值。我需要它查看第一張紙上的時間,並檢查它是否與第二張紙上的時間相符,比如說10分鐘。這是我使用的代碼。 FYI(Sheet 1中,1 =日期,2 =時間,3 =引用號)(Sheet 2中,1 =日期,2 =時間,3 =引用號,4 =引用號)搜索在一個時間範圍

If UCase(Worksheets("Sheet1").Cells(i, 1).Value) = UCase(Worksheets("Sheet2").Cells(j, 1).Value) Then 
If UCase(Worksheets("Sheet1").Cells(i, 2).Value) = UCase(Worksheets("Sheet2").Cells(j, 2).Value) Then 
If UCase(Worksheets("Sheet1").Cells(i, 3).Value) = UCase(Worksheets("Sheet2").Cells(j, 4).Value) Or UCase(Worksheets("Sheet1").Cells(i, 4).Value) = UCase(Worksheets("Sheet2").Cells(j, 4).Value) Then 
Worksheets("Workings").Cells(i, 1).Value = UCase(Worksheets("Sheet2").Cells(j, 12).Value) 
Worksheets("Workings").Cells(i, 2).Value = UCase(Worksheets("Sheet2").Cells(j, 9).Value) 

我無法找到這一問題的參考在任何論壇上,我完全不知道,我確信有一個簡單的解決方案。

回答

1

假設VBA,該細胞是在日期/時間格式& i是它們的地址;

Abs(DateDiff("N", Worksheets("Workings").Cells(i, 1).Value, Worksheets("Sheet2").Cells(i, 1).Value)) 

將返回一個正整數,表示2次分鐘數之差。

我創建了一個空白工作簿和;

Worksheets("Sheet1").Cells(1, 2).Value = "15:00:00" 
Worksheets("Sheet1").Cells(2, 2).Value = "15:00:00" 
Worksheets("Sheet1").Cells(3, 2).Value = "15:00:00" 

Worksheets("Sheet2").Cells(1, 2).Value = "15:05:00" 
Worksheets("Sheet2").Cells(2, 2).Value = "15:59:00" 
Worksheets("Sheet2").Cells(3, 2).Value = "15:00:00" 

For i = 1 To 3 
    If (Abs(DateDiff("N", Worksheets("Sheet1").Cells(i, 2).Value, Worksheets("Sheet2").Cells(i, 2).Value)) < 10) Then 
     Worksheets("Sheet2").Cells(i, 3) = "in range" 
    End If 
Next 

適用於我,我在sheet2上看到;

15:05 in range 
15:59 
15:00 in range 
+0

嗨亞歷克斯K,對不起,我可能不太清楚我需要什麼。第一個if函數檢查日期是否匹配那裏的各個列,第二個檢查時間和第三個ref。如果Ref,日期和時間相匹配,則返回一個值,如果全部匹配,但時間不變,因爲它是一分鐘後,單元格將保持空白。我需要這個公式來允許一個小時的方式(10分鐘) – Chris 2011-04-18 13:31:01

+0

你不能只是取代時間平等檢查; '如果UCase(Worksheet(「Sheet1」)。Cells(i,2).Value)= UCase(Worksheet(「Sheet2」)。Cells(j,2).Value)Then' with 10 minutes window check: (i,1).Value))> 10)然後' – 2011-04-18 13:35:56

+0

亞歷克斯K,我剛剛嘗試過這一點,它立即完成運行,並沒有返回任何值? – Chris 2011-04-18 13:47:00