#include <Array.au3>
#include <Excel.au3>
Local $sFile1 = FileOpenDialog('Выбрать файл таблицы 1', @ScriptDir, 'Файлы EXCEL(*.xls;*.xlsx)', 1)
Local $sFile2 = FileOpenDialog('Выбрать файл таблицы 2', @ScriptDir, 'Файлы EXCEL(*.xls;*.xlsx)', 1)
Local $oExcel = _Excel_Open(False)
;Читаем в массив книгу 1
Local $oWorkbook1 = _Excel_BookOpen($oExcel, $sFile1)
If @error Then ConsoleWrite('error book open ' & @error & @CRLF)
Local $aBook1 = _Excel_RangeRead($oWorkbook1, Default, Default, Default, True)
If @error Then ConsoleWrite('error book read ' & @error & @CRLF)
_Excel_BookClose($oWorkbook1)
;Читаем в массив книгу 2
Local $oWorkbook2 = _Excel_BookOpen($oExcel, $sFile2)
Local $aBook2 = _Excel_RangeRead($oWorkbook2)
For $i = 0 To UBound($aBook1) - 1
Local $sName = $aBook1[$i][1]
For $j = 0 To UBound($aBook2) - 1
If $sName = $aBook2[$j][0] Then
$iCena = $aBook1[$i][3]
_ExcelWriteCell($oWorkbook2, $iCena, $j + 1, 5)
EndIf
Next
;ConsoleWrite($sName & @CRLF)
Next
_Excel_BookSave($oWorkbook2)
_Excel_BookClose($oWorkbook2)
_Excel_Close($oExcel)
; Функция записи значения в таблицу Excel со старой UDF (мне так удобнее)
Func _ExcelWriteCell($oExcel, $sValue, $sRangeOrRow, $iColumn = 1)
If Not IsObj($oExcel) Then Return SetError(1, 0, 0)
If Not StringRegExp($sRangeOrRow, "[A-Z,a-z]", 0) Then
If $sRangeOrRow < 1 Then Return SetError(2, 0, 0)
If $iColumn < 1 Then Return SetError(2, 1, 0)
$oExcel.Activesheet.Cells($sRangeOrRow, $iColumn).Value = $sValue
Return 1
Else
$oExcel.Activesheet.Range($sRangeOrRow).Value = $sValue
Return 1
EndIf
EndFunc ;==>_ExcelWriteCell