2016-12-28 4 views
-3

У меня есть длинный список значений, которые становятся длиннее каждый день. Она содержит данные из машины, которые присваивают значения основаны на кнопках сдвинуты, значения являются -1, 0, 1, 2.Прокрутите список и найдите определенные значения VBA

enter image description here

Каждый раз, когда машина выполняет операцию, то присвоить уникальный номер , Если кнопка «тест» нажата, она дает значение -1, и уникальный номер из предыдущей операции присваивается этому «тесту». Это связано с тем, что тест не считается операцией. Пример № 331 на картинке.

Я хочу создать отчет из своих данных. Я хочу его в формате, представленном ниже.

enter image description here

я для этого нужен код VBA, который будет проходить через весь список (около 2000 клеток в настоящее время) и перемещать значения на новый лист.

До сих пор я пытался скопировать область, содержащую нужные мне значения, на новый лист, а затем использовать эту формулу для перемещения каждого номера.

Worksheets("Sheetname").Cells(NewRow + 2, 2).Value = Range("button").Value 
+2

Так что вы пробовали? И какова ваша конкретная проблема? – Prisoner

ответ

1

Надеюсь, я понял вопрос. Следующий код может быть не самым чистым, но он работает. Я предположил, что start-> stop всегда имеет одинаковое количество шагов и всегда в одном порядке.

Sub test2() 

Application.ScreenUpdating = False 

For i = 1 To 20000 
    For j = 1 To 9 
     nextfree = WorksheetFunction.CountA(Range("A:A")) + 1 
     If Sheets("sheet1").Range("A" & i).Value = Sheets("sheet2").Cells(1, j).Value Then 
      Sheets("sheet2").Cells(nextfree, j).Value = Sheets("sheet1").Range("C" & i).Value 
     End If 
    Next j 
Next i 

Application.ScreenUpdating = True 

End Sub 
+0

Использование 'Select', как это громоздко. Возможно, у вас может быть массив разных случаев, а затем определить столбец на основе позиции строки в массиве? – CallumDA

+1

@CallumDA Вы имеете в виду это? См. Мой обновленный ответ. – Mick17

+0

Да, это намного лучше – CallumDA

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