Что нового

поиск одного элемента массива в другом массиве и запись результата в файл Excel

serg41

Новичок
Сообщения
14
Репутация
0
Версия AutoIt: 3.5.4

Описание:Здравствуйте, прошу помочь решить проблему есть файл Excel в нем таблица с кучей столбиков
нужно перебрать строки на наличие схожих по значению в поле фио, дата рождения и диагноз, и если есть строки у которых эти значения не совпали ни с одним значением из других строк то их надо удалить. т.е. есть строки с человеками у которых было несколько записей(их оставляем), а есть у которых запись одна их удаляем. Заранее спасибо!!!


попытался сделать через массивы но что то не работает
Код:
#include <Array.au3>
#include <Excel.au3>
$File = FileOpenDialog('Выбрать файл для сортировки', @ScriptDir, "Файлы EXCEL (*.xls;*.xlsx)", 2 + 1)
If Not @error Then
Local $oExcel = _Excel_Open(False)
    If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Ошибка !", "Ошибка создания объекта Excel." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    Local $oWorkbook = _Excel_BookOpen($oExcel, $File)
    If @error Then
        MsgBox($MB_SYSTEMMODAL, "Ошибка !", "Ошибка открытия файла Excel " & @ScriptDir & "\Extras\_Excel1.xls'." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
        _Excel_Close($oExcel)
        Exit
	 EndIf

Dim $aSin = _Excel_RangeRead($oWorkbook)
Dim $sGar = _Excel_RangeRead($oWorkbook)
Dim $aGarReady
Dim $aGarUndef
For $i = 1 to UBound($aSin) - 1
     If StringRegExp($sGar, $aSin[$i]) =1 Then
           _ArrayAdd($aGarReady, $aSin[$i])
     Else
     _ArrayAdd($aGarUndef, $aSin[$i])
     EndIf
 Next
 _ArrayDisplay($aGarReady)
_ArrayDisplay($aGarUndef)
Примечания:
 

Вложения

  • аналитика2.7z
    12.2 КБ · Просмотры: 3

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
Я так понимаю, что это продолжение предыдущей темы ? В предыдущей изменил - добавил к сортировке ещё и удаление одиночных записей, писал под пример из этой темы. Или Вам нужно именно с массивами ? Тогда вот :
Код:
#include <Excel.au3>


$File = FileOpenDialog('Выбрать файл для сортировки', @ScriptDir, "Файлы EXCEL (*.xls;*.xlsx)", 2 + 1)
If Not @error Then

    Local $oExcel = _Excel_Open(False)
    If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Ошибка !", "Ошибка создания объекта Excel." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    Local $oWorkbook = _Excel_BookOpen($oExcel, $File)
    If @error Then
        MsgBox($MB_SYSTEMMODAL, "Ошибка !", "Ошибка открытия файла Excel " & @ScriptDir & "\Extras\_Excel1.xls'." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
        _Excel_Close($oExcel)
        Exit
    EndIf

$Array=_Excel_RangeRead($oWorkbook)
 _Excel_Close($oExcel)

 ;Сортировка массива по графе "Полис"
 _ArraySort($Array, 0, 1, 0, 3)

_ArrayDisplay($Array)
 ;Удаление "одиночных" записей
 For $i=UBound($Array)-1 to 1 step -1

	$Polis=$Array[$i][3]
    $Found=_ArrayFindAll($Array,$Polis,1,Ubound($Array)-1,0,0,3)

	If Ubound($Found)=1 Then _ArrayDelete($Array,$i)

 Next

_ArrayDisplay($Array)

EndIf
 
Автор
S

serg41

Новичок
Сообщения
14
Репутация
0
спасибо большое за помощь ;D
 
Верх