2016-12-29 37 views
2

在我的Excel表格「進度狀態」中,我有2列,第一列包含在我的循環和第二列中包含的所有測試用例的列表I想從名爲「All run TestCases」的其他工作表中獲得測試用例的最新狀態。按日期和時間檢索值的最新狀態

我試過使用一些excel函數來獲取最新的日期和時間,以便我可以獲得測試用例的最新狀態,但是我沒有成功,因爲我對它們沒有深入的瞭解,請有人可以請幫助我。 The picture shows how my two sheet look like.

+0

歡迎來到SO!請包括您迄今爲止所嘗試的內容。 [這裏有一些格式化任何代碼塊的幫助](https://stackoverflow.com/help/formatting),儘管在這種情況下用back-ticks包圍它應該沒問題。我懷疑INDEX(MATCH())的一些組合並添加另一列可以簡化您的問題,或者使用重數組公式可以做你想做的事。 – ti7

+0

HI 我在工作表「進度狀態」中使用此代碼 = IF(MAX(IF(Progress Status!)F3 =所有運行TestCases!$ A $ 2:$ A $ 10; $ B $ 2:$ B $ 10));所有運行TestCases!$ D $ 3:$ D $ 10;「」) – user3551180

+0

如果您只將一個列的日期和時間組合起來,這將會容易得多。 –

回答

0

好的,這裏是答案。請確保executionDate和executionTime列分別以日期和時間格式。使用以下功能=B3+C3創建一個新列作爲FinalTime。將其用於休息。
然後你可以使用下面的宏。如果點擊了OLEDB connection,則可能需要在VBA屏幕中檢查Tools > preferences
我假設你的牀單名稱爲TestCasesProgressStatus。並且Test case name的標題更改爲Test。您可以在工作表或宏中更改它們。

Sub makro() 

Dim deneme As String 
Dim queryStr As String 
Dim con As Object, rs As Object, sorgu$, a$ 
    Set con = CreateObject("adodb.connection") 
    Set rs = CreateObject("adodb.recordset") 
    con.Open "provider=microsoft.ace.oledb.12.0;data source=" & _ 
    ThisWorkbook.FullName & ";extended properties=""Excel 12.0;hdr=yes""" 

queryStr = "Select u.[Test]" & _ 
     ",u.[Status] " & _ 
    "From [TestCases$] As u " & _ 
    "Inner Join (" & _ 
    "Select [Test] " & _ 
      ",max(FinalTime) as [LastDate] " & _ 
     "From [TestCases$] " & _ 
     "Group By [Test]) As [q] " & _ 
"On u.Test = q.Test " & _ 
" And u.FinalTime = q.LastDate" 

    Set rs = con.Execute(queryStr) 
    Sheets("ProgressStatus").Range("A2").CopyFromRecordset rs 

    Set rs = Nothing 
    Set con = Nothing 

End Sub 

這裏是TestCases和ProgressStatus-帶有我工作過的結果表。 TestCasesProgressStatus

+0

嗨 我會而是嘗試通過使用excelfunktion找到解決方案,但是謝謝任何方式 – user3551180