Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.05.13;
Скачать: [xml.tar.bz2];

Вниз

Сравнить строки в Excel   Найти похожие ветки 

 
Neket   (2007-04-24 12:39) [0]

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


 
Jeer ©   (2007-04-24 12:53) [1]

На двух колхозных полях посеяли кукурузу, но у председателя возникло подозрение, что местами посеяна конопля.
Как определить, чем именно засеяно не дожидаясь всходов ?


 
Neket   (2007-04-24 13:03) [2]

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


 
Jeer ©   (2007-04-24 13:05) [3]

CompareAllValuesAndFormatsInExcelRow(row: longint): boolean;


 
ЮЮ ©   (2007-04-24 13:12) [4]

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

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

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


 
iXT ©   (2007-04-24 13:14) [5]

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

ЗЫ

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

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


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

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


 
iXT ©   (2007-04-24 13:27) [7]

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


 
Jeer ©   (2007-04-24 13:30) [8]


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


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


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


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

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


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


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

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


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

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


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


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


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


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

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


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


> Neket   (24.04.07 13:18) [6]


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

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

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


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


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

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


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

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

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


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


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


Можно.

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


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

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


 
Jeer ©   (2007-04-24 16:55) [17]

Neket   (24.04.07 16:48) [14]

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

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

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

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


 
iXT ©   (2007-04-24 16:57) [18]

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

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


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


> Neket   (24.04.07 16:53) [16]


> жОш


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


 
iXT ©   (2007-04-24 17:07) [20]

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


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

Вот подсказали как правельно прописывать строки 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);


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

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


 
iXT ©   (2007-04-25 16:08) [23]

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

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


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


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

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



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.05.13;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.048 c
2-1176958517
san655
2007-04-19 08:55
2007.05.13
Не изменяется свойство Count у компонента Listbox


1-1173954705
Alvin
2007-03-15 13:31
2007.05.13
Передача параметров приложению


15-1176404791
DBGrid
2007-04-12 23:06
2007.05.13
Где скачать


1-1173878577
Choco
2007-03-14 16:22
2007.05.13
не разрешить вставку дубрирующей записи в БД


4-1166212509
Chempion
2006-12-15 22:55
2007.05.13
Получения миниатюры из изображения





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский