09.09.2012, 02:03 | #11 (permalink) |
Member
Регистрация: 08.09.2012
Сообщений: 14
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
n:=excel.ActiveCell.Row; i:=2; while i < n do begin excel.WorkBooks[1].WorkSheets[1].Rows[i].Select; excel.Selection.Insert(Shift:=xlDown); inc(i); end; |
09.09.2012, 02:03 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Ваш вопрос похож на содержание данных обсуждений Excel, Pdf, Doc + Php Цикл с параметром for Цикл с условием, Паскаль Цикл с условием, Паскаль |
09.09.2012, 19:47 | #12 (permalink) |
Member
Регистрация: 08.09.2012
Сообщений: 14
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
В общем добрался до следующего:
Код:
unit new; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, comobj, StdCtrls, Excel_TLB, Buttons; type TForm1 = class(TForm) BitBtn1: TBitBtn; procedure BitBtn1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; excel: variant; i,j,k,a_:integer; c_,d_:real; const b_=1.22; implementation {$R *.dfm} procedure TForm1.BitBtn1Click(Sender: TObject); begin Excel:= CreateOleObject('Excel.Application'); try Excel.workbooks.open(GetCurrentDir() + '\book2.xlsx'); try for i:= Excel.WorkBooks[1].WorkSheets[1].UsedRange.Rows.Count-1 downto 9 do begin for j:=1 to 3 do begin Excel.WorkBooks[1].WorkSheets[1].Rows[i].insert; end; Excel.WorkBooks[1].WorkSheets[1].Range[Excel.WorkBooks[1].WorkSheets[1].cells[i-1,1],Excel.WorkBooks[1].WorkSheets[1].cells[i+2,1]].merge; Excel.WorkBooks[1].WorkSheets[1].Range[Excel.WorkBooks[1].WorkSheets[1].cells[i-1,2],Excel.WorkBooks[1].WorkSheets[1].cells[i+2,2]].merge; Excel.WorkBooks[1].WorkSheets[1].Range[Excel.WorkBooks[1].WorkSheets[1].cells[i-1,6],Excel.WorkBooks[1].WorkSheets[1].cells[i+2,6]].merge; Excel.WorkBooks[1].WorkSheets[1].Range[Excel.WorkBooks[1].WorkSheets[1].cells[i-1,7],Excel.WorkBooks[1].WorkSheets[1].cells[i+2,7]].merge; Excel.WorkBooks[1].WorkSheets[1].Range[Excel.WorkBooks[1].WorkSheets[1].cells[i-1,8],Excel.WorkBooks[1].WorkSheets[1].cells[i+2,8]].merge; Excel.WorkBooks[1].WorkSheets[1].Range[Excel.WorkBooks[1].WorkSheets[1].cells[i-1,9],Excel.WorkBooks[1].WorkSheets[1].cells[i+2,9]].merge; Excel.WorkBooks[1].WorkSheets[1].Range[Excel.WorkBooks[1].WorkSheets[1].cells[i-1,10],Excel.WorkBooks[1].WorkSheets[1].cells[i+2,10]].merge; Excel.WorkBooks[1].WorkSheets[1].Range[Excel.WorkBooks[1].WorkSheets[1].cells[i-1,12],Excel.WorkBooks[1].WorkSheets[1].cells[i+2,12]].merge; Excel.WorkBooks[1].WorkSheets[1].cells[i,11]:=2; Excel.WorkBooks[1].WorkSheets[1].cells[i+1,11]:=3; Excel.WorkBooks[1].WorkSheets[1].cells[i+2,11]:=4; Excel.WorkBooks[1].WorkSheets[1].Range[Excel.WorkBooks[1].WorkSheets[1].cells[i-1,18],Excel.WorkBooks[1].WorkSheets[1].cells[i+2,21]]:='-'; end; randomize; for a_:=8 to 9 do begin c_:=(b_*0.01)+(b_*0.1)*random; d_:=b_*c_; Excel.WorkBooks[1].WorkSheets[1].cells[a_,14]:=b_+d_; end; excel.visible := true; finally Excel.ActiveWorkbook.Close; end; finally end; end; end. |
09.09.2012, 23:11 | #13 (permalink) |
VIP user
Регистрация: 10.03.2011
Сообщений: 765
Записей в дневнике: 1
Сказал(а) спасибо: 10
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3453
|
StringGrid1.Cells[i,0]:=inttostr(random(10000)-5000); - заполнить строку в массиве случайными числами от +10000 до -5000
|
10.09.2012, 23:39 | #14 (permalink) |
Member
Регистрация: 08.09.2012
Сообщений: 14
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
В общем я сам во всем разобрался и задача практически выполнена осталась она проблема:
допустим у меня есть 7 ячеек(В них может быть число отличное от нуля либо ничего) по вертикали мне нужно сделать такое условие Если А[i] пустая то переходим к следующей ячейке иначе копируем значение в стоящие следом 3 ячейки было: стало: А1 17,33 А1 17,33 А2 А2 17,33 А3 А3 17,33 А4 А4 17,33 А5 13,23 А5 13,23 А6 А6 13,23 А7 А7 13,23 А8 А8 13,23 А9 А9 А10 А10 А[n] A[n] A[n+1] A[n+1] |
11.09.2012, 00:11 | #15 (permalink) |
VIP user
Регистрация: 10.03.2011
Сообщений: 765
Записей в дневнике: 1
Сказал(а) спасибо: 10
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3453
|
Условие If then else вводи и все.
на вскидку if a[i] := " " tnen ... |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
11.09.2012, 00:38 | #16 (permalink) |
Member
Регистрация: 08.09.2012
Сообщений: 14
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Вот что получил, но не работает
if Excel.WorkBooks[1].WorkSheets[1].Range['P16']=' ' then Excel.WorkBooks[1].WorkSheets[1].Range['P16'].Formula:='=Q16+N17'; |
11.09.2012, 01:58 | #20 (permalink) |
Member
Регистрация: 08.09.2012
Сообщений: 14
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
я смотрел выбираю поиск по букве "R" а там нет range
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|