Плохой выбор данных с использованием VBScript, значений полей даты

У меня есть лист, который содержит данные, как показано ниже:

введите описание изображения здесь

введите описание изображения здесь

Теперь Excel имеет 36 заданий, у каждой задачи есть 4 столбца. первая задача. имя Task1 всегда будет запущено из столбца L. 36 задач были описаны 144 столбца. Теперь нам нужно пройти по строке и нужно проверить, будет ли TNStart Start date <T (N + 1) Start date.then, эта строка будет выбрана как плохая строка. Вкратце, когда номер задачи № будет увеличен с 1 до 36, дата начала должна быть соответствующей, должна быть в порядке возрастания. Если это не удается в любое время, строка должна быть помечена как плохие данные.

Можете ли вы, ребята, помочь мне здесь, чтобы сделать это с хорошей модой?

Option Explicit Dim objExcel1 Dim strPathExcel1 Dim objSheet1,objSheet2 Dim IntRow1,IntRow2 Dim ColStart Set objExcel1 = CreateObject("Excel.Application")'Object for Condition Dump strPathExcel1 = "D:\AravoVB\Copy of Original Scripts\CopyofGEWingtoWing_latest_dump_21112012.xls" objExcel1.Workbooks.Open strPathExcel1 Set objSheet1 = objExcel1.ActiveWorkbook.Worksheets(1) Set objSheet2 = objExcel1.ActiveWorkbook.Worksheets("Bad Data") objExcel1.ScreenUpdating = False objExcel1.Calculation = -4135 'xlCalculationManual IntRow2=2 IntRow1=4 Do Until IntRow1 > objSheet1.UsedRange.Rows.Count ColStart = objExcel1.Application.WorksheetFunction.Match("Parent Business Process ID", objSheet1.Rows(3), 0) + 1 Do Until ColStart > objSheet1.UsedRange.Columns.Count And objSheet1.Cells(IntRow1,ColStart) = "" If objSheet1.Cells(IntRow1,ColStart + 1) > objSheet1.Cells(IntRow1,ColStart + 5) and objsheet1.cells(IntRow,ColStart + 5)  "" Then objSheet1.Range(objSheet1.Cells(IntRow1,1),objSheet1.Cells(IntRow1,objSheet1.UsedRange.Columns.Count)).Copy objSheet2.Range(objSheet2.Cells(IntRow2,1),objSheet2.Cells(IntRow2,objSheet1.UsedRange.Columns.Count)).PasteSpecial IntRow2=IntRow2+1 Exit Do End If ColStart=ColStart+4 Loop IntRow1=IntRow1+1 Loop objExcel1.ScreenUpdating = True objExcel1.Calculation = -4105 'xlCalculationAutomatic 

Плохая производительность

В моем листе есть 2000 строк, а критерий отбора плохих данных – 144 столбца. Теперь выход идет через 25 минут. Таким образом, это увеличивает общую производительность. Поэтому я прошу вас помочь мне, сделав его более быстрым.

Возможно ли также, когда он справляется с плохой строкой на другом листе, также отмечены плохие столбцы в RED

Я бы предложил подключиться к электронной таблице Excel через ADODB и получить данные с помощью SQL. Вы можете экспортировать данные в новую таблицу Excel просто, используя метод CopyFromRecordset .

 Option Explicit Dim conn, cmd, rs Dim clauses(34), i Dim xlApp, xlBook Set conn = CreateObject("ADODB.Connection") With conn .Provider = "Microsoft.ACE.OLEDB.12.0" .ConnectionString = "Data Source=""C:\path\to\excel\file.xlsx"";" & _ "Extended Properties=""Excel 12.0;HDR=Yes""" 'If you don't have Office 2007 or later, your connection string should look like this: '.ConnectionString = "Data Source=""C:\path\to\excel\file.xls"";" & _ ' "Extended Properties=""Excel 8.0;HDR=Yes""" .Open End With For i = 0 To 34 clauses(i) = "[Task" & i + 1 & " Start Date] < [Task" & i + 2 & " Start Date]" Next Set cmd = CreateObject("ADODB.Command") cmd.CommandText = "SELECT * FROM [WorksheetName$] WHERE " & Join(clauses, " OR ") cmd.ActiveConnection = conn Set rs = cmd.Execute Set xlApp = CreateObject("Excel.Application") xlApp.Visible = True Set xlBook = xlApp.Workbooks.Add xlBook.Sheets(1).Range("A1").CopyFromRecordset cmd.Execute 

Замените C:\path\to\excel\file.xlsx и WorksheetName с соответствующими значениями.


обновленный

Некоторые ссылки:

Время выполнения VBScript / WSH / Scripting

  • JScript и VBScript , в частности, разделы VBScript , Script Runtime и Windows Script Host . Также проверьте раздел « Регулярные выражения »

ADODB - объекты данных ActiveX

  • Как использовать объект подключения
  • Объекты данных Microsoft ActiveX
  • Как открыть объекты соединения ADO и объекты набора записей
  • Как использовать ADO для чтения и записи данных в книгах Excel
  • Программирование ADO VBScript - поскольку большинство образцов ADO находятся в VB6 / VBA

Разработка клиентских приложений

Многие образцы в MSDN используют VBA или VB6. Для краткого введения в портирование VBA / VB6 на VBScript см. Здесь . Основной момент для запоминания - это большинство из этих тем (ADODB, Excel, Scripting Runtime) не являются специфичными для VBScript; они являются объектными моделями, доступными для любого языка с поддержкой COM, и их использование будет выглядеть очень похоже (см. здесь пример на Python).

Google - ваш друг , как и StackOverflow .

  • Код VBscript для захвата stdout, без отображения windows консоли
  • Remap Keys - нет программного обеспечения
  • Скрыть окно командной строки при использовании Exec ()
  • Попытка скопировать файл с одного ПК XP на другой с помощью WMI, поскольку RPC и UNC недоступны
  • Как остановить открытие каждого файла пакета как процесс с именем cmd.exe, как показано в диспетчере задач
  • VBS: различать Windows-Explorer и Internet-Explorer
  • Обнаружение при загрузке веб-страницы без использования сон
  • Параметрированный запрос в Classic Asp
  • Запускать программы, путь которых содержит пробелы
  • вставить переменную в команду cmd
  • Vbscript для автолога
  • Давайте будем гением компьютера.