Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Удаление строк в Excel с помощью Delphi: сохраняем уникальные города

Delphi , Технологии , COM и DCOM

Удаление строк в Excel с помощью Delphi: сохраняем уникальные города

При работе с Excel через Delphi часто возникает задача удаления строк, которые не соответствуют определенным условиям. В частности, пользователь, использующий Delphi Tokyo и Excel 2016, сталкивается с необходимостью удаления строк в листе, за исключением тех, которые содержат определенные значения в определенном столбце. В данном случае речь идет о списке компаний, где столбец 3 содержит город, в котором расположена компания. Пользователю необходимо оставить строки только для компаний из Чикаго, Денвера и Колумбуса.

Для решения этой задачи можно использовать функционал автофильтра Excel, который позволяет выделить и удалить нежелательные строки. Однако возникает вопрос: как узнать, какие именно уникальные значения присутствуют в столбце, чтобы создать массив всех городов за исключением тех, которые нужно удалить?

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

Для получения массива уникальных значений можно использовать следующий подход в Delphi:

  1. Создать новый VCL-проект в Delphi и добавить на форму компонент TCheckListBox.
  2. Компилировать и запустить следующий код, который заполнит диапазон ячеек в Excel случайными данными и извлечет уникальные значения для отображения в TCheckListBox:
vExcel,
vWorkBook,
vSheet,
vRange : OleVariant;

procedure GetUniqueValues(vRange : OleVariant; Strings : TStrings);
var
  S : String;
  Row,
  Col : Integer;
begin
  Strings.BeginUpdate;
  Strings.Clear;
  try
    for Row := 2 to vRange.Rows.Count do begin
      for Col := 1 to vRange.Columns.Count do begin
        S := vRange.Cells[Row, Col].Value;
        if Strings.IndexOf(S) < 0 then
          Strings.Add(S);
      end;
    end;
  finally
    Strings.EndUpdate;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  i : Integer;
begin
  vExcel := CreateOleObject('Excel.Application');
  vExcel.Visible := True;

  vWorkBook := vExcel.WorkBooks.Add;
  vSheet := vWorkBook.ActiveSheet;
  vSheet.Range['A1'].Value := 'City';
  for i := 1 to 20 do begin
    vSheet.Range['A' + IntToStr(1 + i)].Value := Chr(Random(3) + Ord('A'));
    vSheet.Range['B' + IntToStr(1 + i)].Value := Chr(Random(4) + Ord('A'));
  end;

  vRange := vSheet.Range['A2', 'B21'];

  CheckListBox1.Sorted := True;

  GetUniqueValues(vRange, CheckListBox1.Items);

  // Дополнительные действия с данными
end;

Этот код позволяет заполнить TCheckListBox уникальными значениями из диапазона ячеек Excel, что позволяет пользователю в дальнейшем обрабатывать данные по своему усмотрению.

Также можно использовать функцию Range.AdvancedFilter для более простого определения критериев фильтрации.

В случае, если необходимо сохранить уникальные города для дальнейшего использования, можно использовать полученный массив значений из TCheckListBox.

Пример использования Range.AdvancedFilter в макросе Excel:

Public Sub UseAdvancedFilter()
    Dim MyRange As Range
    Set MyRange = Range("A1").CurrentRegion

    Range(MyRange.Address).AdvancedFilter _
        Action:=xlFilterInPlace, _
        CriteriaRange:=Range("A28:C29")

    Rows("2:" & MyRange.Rows.Count).Select
    Selection.Delete Shift:=xlUp

    ActiveSheet.ShowAllData
End Sub

Этот макрос можно вызвать из Delphi, используя следующий код:

Excel.Run('UseAdvancedFilter');

Таким образом, используя Delphi и возможности Excel, можно эффективно управлять данными в таблицах Excel, сохраняя и обрабатывая уникальные значения.

Создано по материалам из источника по ссылке.

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


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




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


:: Главная :: COM и DCOM ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2024-12-27 00:47:43/0.0033328533172607/0