Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.02.2013, 23:53   #1
Rolls
Пользователь
 
Регистрация: 07.05.2010
Сообщений: 45
По умолчанию Поиск в Excel в конкретном столбце

Всем привет!
Много информации нашёл по поводу поиска в книге Excel, но так и не нашёл поиска в конкреном столбце..
Вот пример кода, который мне оказался ближе всего к пониманию.
Уважаемые гуру, помогите указать нужные параметры в нужных местах, чтобы поиск производился например в 10ом
столбце, а потом выяснить строку, в которой оказалось искомое значение:

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  Excel, Book, Sheet, tmp: variant;
  FirstAddress: string;
  avt: word;
begin
  Button1.Enabled := false;
  Memo1.Clear;
  Application.ProcessMessages;

  try
    Excel := CreateOleObject('Excel.Application');
    Excel.Application.EnableEvents := false;

    // Сделать нормальный стиль ячеек (A1, C5 и т.д), а не стиль R1C1 (столбы и строки обозначаются цифрами)
    Excel.Application.ReferenceStyle := 0;

    Book := Excel.Workbooks.Open(GetCurrentDir + '\' + 'Книга1.xls');
    Sheet := Book.Sheets[1];

    tmp := Sheet.Cells[1,1];
    tmp := Sheet.Cells.find(What := Edit1.Text, LookIn := xlValues, SearchOrder := xlByRows, SearchDirection := xlNext);
    if (not VarIsClear(tmp)) and (Edit1.Text <> '') then
    begin
      FirstAddress := tmp.Address;
      repeat
        tmp := Sheet.Cells.FindNext(After := tmp);
        Memo1.Lines.Add('Cell[' + IntToStr(tmp.Row) + ':' + IntToStr(tmp.Column) + ']');
//        Memo1.Lines.Add('[' + StringReplace(Copy(tmp.Address, 2, length(tmp.Address)), '$', ':', []) + ']'); // Чтобы адрес Ячейки выводился как [A:1] [C:4] и т.д.
      until FirstAddress = tmp.Address;
    end
    else
      Memo1.Lines.Add('Не найдено')

  finally
    Excel.Quit;
    Excel := Unassigned;
    tmp := Unassigned;
    Button1.Enabled := true;
  end;
end; // Button1Click
Rolls вне форума Ответить с цитированием
Старый 16.02.2013, 03:22   #2
Rolls
Пользователь
 
Регистрация: 07.05.2010
Сообщений: 45
По умолчанию

Разобрался сам, всё гораздо проще, чем кажется.
Для тех, кому нужен поиск по столбцу, вот пример кода поиска одного значения (в моём случае значения в одном столбце не могут повторяться) по 10му столбцу, если бы я нашёл такой пример, сэкономил бы кучу времени.

Код:
var Code : string; //--- Искомое значение
...
tmp := Excel.Sheets[1].Columns[10].Find(What := Code, LookIn := xlValues, SearchOrder := xlByColumns, SearchDirection := xlNext);
ВСЁ!!! одна строчка! Отсюда мы можем вычислить координаты найденой ячейки:

Код:
tmp.Row
tmp.Column
Если же в столбце может быть несколько одинаковых искомых хначений, то вписываем эту строчку в цикл, как в примере выше:

Код:
tmp := Excel.Sheets[1].Columns[10].Find(What := Code, LookIn := xlValues, SearchOrder := xlByColumns, SearchDirection := xlNext);
    if (not VarIsClear(tmp)) and (Code <> '') then
    begin
      FirstAddress := tmp.Address;
      repeat
        tmp := Excel.Sheets[1].Columns[10].FindNext(After := tmp);
        Memo1.Lines.Add('Cell[' + IntToStr(tmp.Row) + ':' + IntToStr(tmp.Column) + ']');
      until FirstAddress = tmp.Address;
    end
    else
      Memo1.Lines.Add('Не найдено')
Всем удачного программирования!
Rolls вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск и замена в столбце Garrison Microsoft Office Excel 24 12.09.2012 17:31
VBA: Поиск одинаковых значений в столбце... hohol90 Помощь студентам 1 27.09.2011 07:57
Поиск одинаковых значений в столбце Батарейкина Microsoft Office Excel 4 21.02.2011 20:34
поиск прогрессий в столбце simpleGo Microsoft Office Excel 18 06.12.2010 20:48
Поиск текста в столбце alex_r Microsoft Office Excel 2 05.11.2009 10:01