|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
Результаты опроса: поможите? | |||
да | 0 | 0% | |
нет | 0 | 0% | |
подумаю | 1 | 100.00% | |
наверно | 0 | 0% | |
Голосовавшие: 1. Вы еще не голосовали в этом опросе |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Сортировка и форматирование ячеек Excel по условию в Delphi
Народ, ваша помощь нужна!
есть 1 столбец в экселе и 2, нужно все значения, которые употребляются в 1 столбце, выделить их во 2 столбце красным цветом. Алгоритм: код программы: Код:
unit Unit1; interface uses Windows, ComObj, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private { Private declarations } public { Public declarations } end; var Form1: TForm1; excel: variant; i,j,n,m:integer; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var s:integer; begin //s:string; s:=0; i:=2; j:=2; n:=2; m:=2; begin //while n>8000 do //for s := 1 to 8000 do repeat begin if Excel.Cells[i, j]=Excel.Cells[n, m] then begin Excel.Range[n,m].Interior.Color:=RGB(223, 123, 123); n:=6; i:=i+1; ShowMessage(inttostr(i)+' '+inttostr(n)+' '+inttostr(m)+' '+inttostr(j)); end else n:=n+1; ShowMessage(inttostr(i)+' '+inttostr(n)+' '+inttostr(m)+' '+inttostr(j)); end; until n>=8000; end; end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin Excel.DisplayAlerts:=False; Excel.ActiveWorkbook.Close; Excel.Application.Quit; end; procedure TForm1.FormCreate(Sender: TObject); begin Excel := CreateOleObject('Excel.Application'); Excel.Visible:= True; Excel.Workbooks.Open['C:\5.xls']; end; end. |
#2
|
|||
|
|||
Если данных не очень много, то рекомендую сначала просто считать первый столбец в память, потом пройтись по 2му и то, что совпадает, закрасить.
|
#3
|
||||
|
||||
Цитата:
Код:
procedure TForm1.Button1Click(Sender: TObject); var Sheet, VA, v: Variant; RowCount, i, j: Integer; begin Sheet := Excel.ActiveSheet; VA := Sheet.UsedRange.Value; RowCount := VarArrayHighBound(VA, 1); for i := 1 to RowCount do begin v := VA[i, 2]; for j := 1 to RowCount do begin if VA[j, 1] = v then begin Sheet.Cells[i, 2].Interior.Color := clRed; Break; end; end; end; end; |