Что нового

выборка последнего значения из выборки повторяющихся строк

serg41

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

Описание:
Здравствуйте, прошу помочь в решении проблемы.
Например есть таблица в файле, где
есть столбцы номер талона, диагноз, дата_визита, врач
смысл задачи в следующем: несколько визитов с одним номером талона это обращение, причем бывает что в одном талоне есть визиты к нескольким врачам, поэтому обращение считается на последнего по дате визита врача, если визит с таким номером талона один то это посещение, необходимо выяснить сколько у врачей было посещений и обращений и вывести это списком типа иванов 1 2
алгоритм действий примерно такой на мой взгляд
1.выбрать повторяющиеся строки по столбцу номер талона из экселевского файла, одиночные записи в отдельный файл
2.в получившейсе выборке для каждого выбранного талона выбрать последнюю строку по столбцу дата визита.
3. далее посчитать повторяющиеся строки финальной выборки по столбцу врач
4. одиночные записи из файла (см. пункт 1) считаем по столбцу врач
4. вывести результаты подсчета табличкой типа фио врач кол-во обращений кол-во посещений
иванов 5 20

Заранее спасибо
Примечания:
 

Вложения

  • Итог_терапия2.7z
    70.4 КБ · Просмотры: 7

hedji

Продвинутый
Сообщения
409
Репутация
94
пытаюсь осознать и каждый раз путаюсь.
в приложенном файле:
- кол-во посещений = сколько раз ФИО врача повторится в файле
- кол-во обращений = сколько уникальных номерков по каждому врачу
т.е. 10 номерков, по каждому номерку приходили 3 раза, итог Иванов - 10 обращений - 30 посещений.
так?
 

sergioz

Знающий
Сообщения
39
Репутация
5
ну чего вы все усложнять хотите?
ексель сам себе инструмент в инструменте, надо только желание научиться с ним работать

для обработки данных есть сводные таблицы - там нет абсолютно ничего сложного
см. пример во вложении
 

Вложения

  • Итог_терапия2.7z
    103.5 КБ · Просмотры: 5

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
Может и извращение, но вот что нашкрябал , проверьте:
Код:
#include <excel.au3>
#include <array.au3>
$IniFile=@ScriptDir&'\result.ini'
FileDelete($IniFile)

$oExcel = _Excel_Open(False)
$oBook = _Excel_BookOpen($oExcel, @ScriptDir & '\Итог_терапия2.xls')
$aArray = _Excel_RangeRead($oBook)
_Excel_Close($oExcel)
_ArraySort($aArray, Default, 1)
$NumTalon = 1
$Talon = $aArray[1][0]
$Doctor = $aArray[1][2]
$Date = $aArray[1][3]
For $i = 2 To UBound($aArray) - 1
	$NewTalon = $aArray[$i][0]
	$NewDoctor = $aArray[$i][2]
	$NewDate = $aArray[$i][3]
	If $Talon = $NewTalon Then
		$NumTalon += 1
		If $NewDate > $Date Then
			$Doctor = $NewDoctor
			$Date = $NewDate
		EndIf
	Else
        If $NumTalon=1 Then
			IniWrite($IniFile,$Doctor,'Посещение',IniRead($IniFile,$Doctor,'Посещение',0)+1)
		Else
			IniWrite($IniFile,$Doctor,'Обращение',IniRead($IniFile,$Doctor,'Обращение',0)+1)
            $NumTalon = 1
		EndIf
			$Talon = $NewTalon
			$Doctor = $NewDoctor
			$Date = $NewDate
	EndIf
Next

MsgBox(48,'','Работа скрипта завершена !')
В результате создаётся ini файл , где секция - ФИО сотрудника и ключи - обращения и посещения.
 
Автор
S

serg41

Новичок
Сообщения
14
Репутация
0
:laugh: :IL_AutoIt_1:МЕГА СПИСИБО ВСЕ РАБОТАЕТ
 
Верх