Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2012, 16:40   #1
dreaminn
 
Регистрация: 12.05.2012
Сообщений: 5
Восклицание подсчет окрашенных ячеек Excel в Delphi с суммированием по файлам

Стоит задача обработать анкеты,заполненные в Excel 2007,в Delphi XE.
Требуется подсчитать окрашенные ячейки из трех столбцов,но отдельно в каждом для последующего суммирования результата по трем. Анкет нное количество.
Возник вопрос при переборе файлов. Файлы открываются,но сумма баллов по всем файлам не находится, а находится лишь по первому и по нему же выводится. что-то не так с циклом for?
заранее спасибо за ответ=)
Код:
procedure TForm4.Button1Click(Sender: TObject);
const
xlNone = -4142;
Number = 150;  //количество ячеек в столбце выставления баллов
  var
  ExApp, ExBook, ExSheet, ExRng, ExCell : Variant;
  FileName : String;
  i, Ball_1, Ball_2, SumBall , FindRes: Integer;
  SR: TSearchRec;
   begin
   FindRes := FindFirst('Анкета ВПП_?.xlsx', faAnyFile, SR);
   while FindRes = 0 do // пока мы находим файлы (каталоги), то выполнять цикл
  begin
  ExApp := CreateOleObject('Excel.Application');
  ExApp.Visible := True;
  FileName := ExtractFilePath(Application.ExeName) + SR.Name;
  ExBook := ExApp.WorkBooks.Open(FileName:=FileName);
  ExSheet := ExBook.WorkSheets[1];
  ExRng := ExSheet.Range['C6:D176'];
  Ball_1 := 0;
  Ball_2 := 0;
  SumBall:= 0;
   for i := 1 to ExRng.Rows.Count do begin
       if ExRng.Cells[i, 1].Interior.ColorIndex = xlNone then Inc(Ball_1);
    if ExRng.Cells[i, 2].Interior.ColorIndex = xlNone then Inc(Ball_2);
     SumBall:= SumBall+2*(Number-Ball_1) + (Number-Ball_2);
end;
FindRes := FindNext(SR); // продолжение поиска по заданным условиям
end;
FindClose(SR); // закрываем поиск
Panel1.Caption := 'Сумма баллов: ' + IntToStr(SumBall);
end;
Вложения
Тип файла: zip Анкета ВПП.zip (23.7 Кб, 5 просмотров)
dreaminn вне форума Ответить с цитированием
Старый 12.05.2012, 16:46   #2
SNUPY
Форумчанин
 
Регистрация: 15.02.2008
Сообщений: 621
По умолчанию

ИМХО:
Код:

procedure TForm4.Button1Click(Sender: TObject);
const
xlNone = -4142;
Number = 150;  //количество ячеек в столбце выставления баллов
  var
  ExApp, ExBook, ExSheet, ExRng, ExCell : Variant;
  FileName : String;
  i, Ball_1, Ball_2, SumBall , FindRes: Integer;
  SR: TSearchRec;
   begin
   FindRes := FindFirst('Анкета ВПП_?.xlsx', faAnyFile, SR);
   while FindRes = 0 do // пока мы находим файлы (каталоги), то выполнять цикл
  begin
  ExApp := CreateOleObject('Excel.Application');
  ExApp.Visible := True;
  FileName := ExtractFilePath(Application.ExeName) + SR.Name;
  ExBook := ExApp.WorkBooks.Open(FileName:=FileName);
  ExSheet := ExBook.WorkSheets[1];
  ExRng := ExSheet.Range['C6:D176'];
  Ball_1 := 0;
  Ball_2 := 0;
  SumBall:= 0;// в этой строке проблема. Нужно вынести за цикл
   for i := 1 to ExRng.Rows.Count do begin
       if ExRng.Cells[i, 1].Interior.ColorIndex = xlNone then Inc(Ball_1);
    if ExRng.Cells[i, 2].Interior.ColorIndex = xlNone then Inc(Ball_2);
     SumBall:= SumBall+2*(Number-Ball_1) + (Number-Ball_2);
end;
FindRes := FindNext(SR); // продолжение поиска по заданным условиям
end;
FindClose(SR); // закрываем поиск
Panel1.Caption := 'Сумма баллов: ' + IntToStr(SumBall);
end;
Помог? Ну так нажми на весы!
SNUPY вне форума Ответить с цитированием
Старый 12.05.2012, 17:58   #3
dreaminn
 
Регистрация: 12.05.2012
Сообщений: 5
Радость

Да,действительно,вынести эту строку перед циклом While и вынести еще и строку SumBall:= SumBall+2*(Number-Ball_1) + (Number-Ball_2) за цикл for
Спасибо!
dreaminn вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчет пустых ячеек Artem_85 Microsoft Office Excel 2 24.02.2012 14:49
Delphi 2009 и Excel, поменяли способ индексации ячеек Valio Общие вопросы Delphi 2 07.05.2011 17:01
подсчет ячеек olka1081989 Microsoft Office Excel 3 26.05.2010 15:46
запрет редактирования ячеек в excel из под delphi Ensoph Общие вопросы Delphi 0 08.10.2009 13:29
СУММИРОВАНИЕ И ПОДСЧЕТ ЯЧЕЕК ОКРАШЕННЫХ В РАЗНЫЙ ЦВЕТ Arina Microsoft Office Excel 11 29.01.2009 14:35