Форум: "Начинающим";
Текущий архив: 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