2016-12-29 1 views
2

В моем листе excel «Статус выполнения» У меня есть 2 столбца, первый из которых содержит список всех тестовых примеров, которые включаются во время моего цикла, а во втором столбце I хотите получить последний статус тестового примера из другого листа с именем «Все тестовые тесты».Получить последний статус значения по дате и времени

Я попытался использовать некоторые функции excel, чтобы получить самую последнюю дату и время, чтобы получить последний статус тестового примера, но мне это не удалось, потому что у меня нет глубокого знания о них, может кто-то угодить помогите мне с этим. The picture shows how my two sheet look like.

+0

Добро пожаловать в SO! Пожалуйста, укажите, что вы пробовали до сих пор. [Вот некоторая помощь в форматировании любых кодовых блоков] (https://stackoverflow.com/help/formatting), хотя при этом в этом случае нужно делать все, чтобы закрыть обратные тики. Я подозреваю, что некоторая комбинация INDEX (MATCH()) и добавление другого столбца упростит вашу проблему, или, возможно, использование формулы тяжелого массива сделает то, что вы хотите. – ti7

+0

HI Я использовал этот код в столбце «Последний статус» в листе «Состояние выполнения» = IF (MAX (IF (Статус выполнения!) F3 = Все прогоны TestCases! $ A $ 2: $ A $ 10; $ B $ 2: $ B $ 10)); Все запустите TestCases! $ D $ 3: $ D $ 10; "") – user3551180

+0

Было бы намного проще, если бы вы просто комбинировали дату и время в одном столбце. –

ответ

0

Хорошо, вот ответ. Убедитесь, что столбцы executeDate и executeTime указаны в формате Date и Time соответственно. Создайте новый столбец как FinalTime со следующей функцией =B3+C3. Примените это для остальных.
Затем вы можете использовать следующий макрос. Возможно, вам нужно будет проверить Tools > preferences на экране VBA, если щелкнуть OLEDB connection.
Я предположил, что ваши листы называются TestCases и ProgressStatus. И заголовок 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

Смежные вопросы