Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сравнить строки в Excel [D7]


Страницы:   1 2

Neket ©   (2007-04-24 12:39:00) 

Подскажите пожалуйста каким образом можно произвести сравнение двух строк в Excel на разных листах. Сравнивать так чтобы не перебирать значения кажой ячейки. Причем интересуют не только значения, но и форматы.


iXT   (2007-04-25 16:08:00) [1]

> if srcRange=dstRange then // Вот тут как правельно сравнить?

вот если Excel так умеет делать, тогда у тебя правильно. А если нет, тогда неправильно.
Как и чего умеет делать Excel надо смотреть в Excel. (справка VB).


> XLApp:=CreateOleObject('Excel.Application');


Вот это что строка делает?

З.Ы.
 Потом сохранить не забудь то что накопировал. И XLApp:=Unassigned


Neket   (2007-04-25 15:51:00) [2]

Я так понимаю мне всетаки никто окончательный ответ не даст?


Neket   (2007-04-25 14:51:00) [3]

Вот подсказали как правельно прописывать строки Row. Поэтому решил вернуться к этой теме, и сформулировать свой вопрос корректно

Var
XLApp1,XL,XLApp,XLApp2,Nah,srcRange, dstRange:Variant;
begin
XLApp:=CreateOleObject('Excel.Application');
XL:=XLApp.Workbooks.Open(FName);// Открываю существующий файл
XLApp1:=XLApp.Workbooks.Add();// Формирую новый
XLApp2:=XLApp1.Workbooks[1].WorkSheets[2];
..........
srcRange := XL.Worksheets[1].Cells.Rows[k];
dstRange := XLApp1.Worksheets[1].Cells.Rows[k];
if srcRange=dstRange then // Вот тут как правельно сравнить?
begin
dstRange := XLApp2.Cells.Rows[k];
srcRange.Copy(dstRange);
end;

srcRange.Copy(dstRange);


iXT   (2007-04-24 17:07:00) [4]

Кстати, первый раз слышу про ускорить!


Сергей М.   (2007-04-24 16:58:00) [5]


> Neket   (24.04.07 16:53) [16]


> жОш


Твентин-засранство в форме "падонкаффский сленг" оставь при себе)


iXT   (2007-04-24 16:57:00) [6]

> [14] Neket   (24.04.07 16:48)
> Я так думаю, что Строка (Row, не string :) ) это много много
> ячеек, а он их не хочет перебирать :)
>
> Абсолютно верно. Вот я и спрашиваю есть ли возможность ускорить
> процесс сравнения Row?

Вот я и отвечаю: смотри в Excel . Можетон и умеет сие сравнивать. Который в свою очередь (далее см. [1], [13]), но тебе будет по барабану как он их там сравнивает.


Jeer   (2007-04-24 16:55:00) [7]

Neket   (24.04.07 16:48) [14]

Разобраться с файловым форматом xls, читать и сравнивать напрямую.
Но все равно, без перебора некоторого диапазона не обойдешься.

Вот есть, например, функция CompareMem.
Если тебя не волнует ее реализация, можешь считать, что она не содержит циклов, хотя это и не так.

Также и с Excel.
Втяни диапазон в clipboard и делаей текстовое сравнение.
Но с форматами такой фокус не пройдет.

Голову в руки, руки в ноги и вперед, экспериментатор.


Neket   (2007-04-24 16:53:00) [8]

Удалено модератором


Сергей М.   (2007-04-24 16:52:00) [9]


> Neket   (24.04.07 16:48) [14]
>
> Абсолютно верно. Вот я и спрашиваю есть ли возможность ускорить
> процесс сравнения Row?


Можно.

Но опять же вссе сводится к ускорению процесса определения того, кукурузная ли ботва торчик в лунке или конопляная.


Neket   (2007-04-24 16:48:00) [10]

Я так думаю, что Строка (Row, не string :) ) это много много ячеек, а он их не хочет перебирать :)

Абсолютно верно. Вот я и спрашиваю есть ли возможность ускорить процесс сравнения Row?


Плохиш   (2007-04-24 14:15:00) [11]


> Игорь Шевченко ©   (24.04.07 13:39) [10]
> iXT ©   (24.04.07 13:42) [11]

Дествительно... Тогда задача решения не имеет, ибо любой способ будет явно или сктытно от взора горе-кодера перебирать ячейки в строке...


Jeer   (2007-04-24 14:01:00) [12]


> Neket   (24.04.07 13:18) [6]


А теперь комментарий к Jeer ©   (24.04.07 12:53) [1]

Чтобы определить, что засеяно на поле - надо пройти и заглянуть в каждую лунку и сравнить.

Догадайся с трех раз - при чем тут Excel.


iXT   (2007-04-24 13:42:00) [13]


> Ни чё моя не понимайт... Если известны строки(я так понимайт
> ячейки), то на кой перебирать все ячейки?

Я так думаю, что Строка (Row, не string :) ) это много много ячеек, а он их не хочет перебирать :)


Игорь Шевченко   (2007-04-24 13:39:00) [14]

Плохиш ©   (24.04.07 13:35) [9]


> Если известны строки(я так понимайт ячейки), то на кой перебирать
> все ячейки?


не, ты не понимайт. Строка - это совокупность ячеек по горизонтали. И их не хочется перебирать


Плохиш   (2007-04-24 13:35:00) [15]


> Neket   (24.04.07 12:39)  
> Подскажите пожалуйста каким образом можно произвести сравнение
> двух строк
в Excel на разных листах. Сравнивать так чтобы
> не перебирать значения кажой ячейки.

Ни чё моя не понимайт... Если известны строки(я так понимайт ячейки), то на кой перебирать все ячейки?


Jeer   (2007-04-24 13:30:00) [16]


> А на какой язык перевели? На Албанский?


Диалект урюпинского с примесью бобруйского.


> ужна функция типа CompareText только для строк в Excel-е?


Для ускорения доступа пользовать Range.
Но ты скажи следующее - для cpu i32 элементарное сравнение, это сравнение
двух 32-разрядных слов. Вот и подумай, какая такая существует функция для сравнения данных с произвольным числом слов  ?
Правильно или написанная или самописная.

Если со значениями тебе все понятно, то дальше и остальное пойшем, если включишь мозг.


iXT   (2007-04-24 13:27:00) [17]

На доступный для понимания тому кто задавал.
Рой справку excel по VB


Neket   (2007-04-24 13:18:00) [18]

2 ЮЮ: Нужна функция типа CompareText только для строк в Excel-е?
2 iXT: А на какой язык перевели? На Албанский?


iXT   (2007-04-24 13:14:00) [19]

C Excel работаешь через OLE. Вот и смотри что может Excel

ЗЫ

> Причем тут всходы.....?????
> Блин как же любят люди поумничать...

Тебе просто перевели твой вопрос


ЮЮ   (2007-04-24 13:12:00) [20]

Как и функция, позволяющвя сравнивать два массива без тотального перебора элементов массива.

Не нравится тотальность, делай break при нахождении первого несоответствия.

З.Ы. Определись, что хочешь, напиши - и будет тебе функция.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо