Autoit версия 3.3.0.
Попытался написать код для отбора определенных строк из одного листа в другой лист Excel.
Во вложении файл excel с исходными данными, со списком сборочных единиц и их деталей, проблема в том, что сборочной единице неправильно распределены детали и подсборки.
Надо по порядку распределить сборочные единицы и его детали. Например должно быть:
82.1.1.1.1.1.1 6.001.01.00.00.00-454 Основание 1 Сборочные единицы
82.1.1.1.1.1.1.10 6.001.01.00.00.01 Настил 1 Детали
82.1.1.1.1.1.1.11 3.001.01.00.00.01-02 Настил 6 Детали
82.1.1.1.1.1.1.12 6.001.01.00.00.01-03 Настил 2 Детали
82.1.1.1.1.1.1.13 3.001.01.00.00.02 Дно 4 Детали
82.1.1.1.1.1.1.14 3.001.01.00.00.02-01 Дно 1 Детали
82.1.1.1.1.1.1.15 3.001.01.00.00.02-02 Дно 2 Детали
82.1.1.1.1.1.1.16 3.001.01.00.00.02-03 Дно 1 Детали
Но почему то детали принадлежащие Основанию не вытаскиваются, в чем проблема?
Попытался написать код для отбора определенных строк из одного листа в другой лист Excel.
Во вложении файл excel с исходными данными, со списком сборочных единиц и их деталей, проблема в том, что сборочной единице неправильно распределены детали и подсборки.
Надо по порядку распределить сборочные единицы и его детали. Например должно быть:
82.1.1.1.1.1.1 6.001.01.00.00.00-454 Основание 1 Сборочные единицы
82.1.1.1.1.1.1.10 6.001.01.00.00.01 Настил 1 Детали
82.1.1.1.1.1.1.11 3.001.01.00.00.01-02 Настил 6 Детали
82.1.1.1.1.1.1.12 6.001.01.00.00.01-03 Настил 2 Детали
82.1.1.1.1.1.1.13 3.001.01.00.00.02 Дно 4 Детали
82.1.1.1.1.1.1.14 3.001.01.00.00.02-01 Дно 1 Детали
82.1.1.1.1.1.1.15 3.001.01.00.00.02-02 Дно 2 Детали
82.1.1.1.1.1.1.16 3.001.01.00.00.02-03 Дно 1 Детали
Но почему то детали принадлежащие Основанию не вытаскиваются, в чем проблема?
Код:
#include <Array.au3>
#include <Excel.au3>
Local $oExcel = _Excel_Open()
$SorceFile = "\Исходные данные.xlsx" ;Путь к файлу с исходными данными
Local $oWorkbook = _Excel_BookOpen($oExcel, @ScriptDir & $SorceFile) ;Открываем файл с исходными данными
Local $oSheet = _Excel_SheetAdd($oWorkbook, 1, False, 1, "Лист2")
Local $aSB = ["Основание", "Каркас основания", "Ферма основания", "Планка крепежная площадки", "Колодец кабельных вводов"]
Local $LastRow = $oWorkbook.Sheets("Лист1").Range("A1").SpecialCells($xlCellTypeLastCell).Row ;Определяем последнюю строку
ConsoleWrite ($LastRow & @CRLF)
Local $aArray = _Excel_RangeRead($oWorkbook, Default, $oWorkbook.Sheets("Лист1").Usedrange.Columns("A:F"), 1)
_ArrayDisplay($aArray)
For $i = 0 To UBound($aSB) - 1
;ConsoleWrite ($aSB[$i]& @CRLF)
For $j = 0 To $LastRow - 1
$sRow = $j + 1
$sPos = $aArray[$j][0]
$sObozn = $aArray[$j][1]
$sName = $aArray[$j][2]
$sKol = $aArray[$j][3]
$sRazd = $aArray[$j][4]
If $sName = $aSB[$i] Then
ConsoleWrite ($sRow & @TAB & $sPos & @TAB & $sObozn & @TAB & $sName & @TAB & $sKol & @TAB & $sRazd & @CRLF)
For $n = 0 To 200
$sRow = $sRow + $n
$sPos1 = $aArray[$j + $n][0]
$sPosN = $sPos & "." & $n
$sObozn = $aArray[$j + $n][1]
$sName = $aArray[$j + $n][2]
$sKol = $aArray[$j + $n][3]
$sRazd = $aArray[$j + $n][4]
If $sPos1 = $sPosN And $sRazd <> "Сборочные единицы" Then
ConsoleWrite ($sRow & @TAB & $sPos1 & @TAB & $sObozn & @TAB & $sName & @TAB & $sKol & @TAB & $sRazd & @CRLF)
Else
EndIf
Next
Else
EndIf
Next
ConsoleWrite (@CRLF)
Next