Excel ЧаВо


Как сделать поиск значений в области ячеек или по всему листу?


Для поиска в области ячеек задайте диапазон ячеек при получении ссылки на объект Range. Если нужно искать по всему листу, то укажите UsedRange или просто одну ячейку, например "A1". Метод Find и FindNext возвращают объект Range, если значение найдено, и, если ничего не найдено, то nil (или null в C#).

Delphi:

var R: ExcelRange; ... S := '77'; R := ASheet.UsedRange[lcid].Find( S, // What: OleVariant;

EmptyParam, // After: OleVariant;

xlValues, // LookIn: OleVariant;

xlPart, // LookAt: OleVariant;

xlByRows, // SearchOrder: OleVariant;

xlNext, // SearchDirection: XlSearchDirection;

False, // MatchCase: OleVariant;

False, //MatchByte: OleVariant

// нужно установить в True, если

EmptyParam // SearchFormat: OleVariant

);

// поиск был завершен удачно, если определен объект R

// поиск следующих ячеек с искомым текстом

if Assigned(R) then begin

Addr := R.Address[True, True, xlA1, EmptyParam, EmptyParam]; repeat

// зальем красным цветом найденные ячейки

R.Interior.Color := RGB(255, 0, 0); R.Font.Color := RGB(255, 255, 220); // найдем следующую

R := ASheet.UsedRange[lcid].FindNext(R); if Assigned(R) then Addr2 := R.Address[True, True, xlA1, EmptyParam, EmptyParam]; // выход, если не найдено или адрес совпал (круг завершен)

until not Assigned(R) or SameText(Addr, Addr2); end;



Find Method

FindNext Method

CellFormat Object

How to: Search for Text in Worksheet Ranges



Содержание раздела