Поиск последнего столбца и копирование - VBA

Узнай цену своей работы

Формулировка задачи:

Всем добрый день. Ребята подскажите пожалуйста, как найти столбец с именем "Столбец 25", в столбце найти строки с значением "Номер один" и все это , вместе со строками и шапкой скопировать на новый лист.

Решение задачи: «Поиск последнего столбца и копирование»

textual
Листинг программы
  1. Option Explicit
  2.  
  3. Private Sub disAccelerateExcel() 'Включаем всё то что выключили процедурой AccelerateExcel
  4.    On Error Resume Next
  5.     With Application
  6.         .ScreenUpdating = True 'Включаем обновление экрана после каждого события
  7.        .Calculation = xlCalculationAutomatic 'Расчёты формул - снова в автоматическом режиме
  8.        .EnableEvents = True 'Включаем события
  9.        If Workbooks.Count Then _
  10.             ActiveWorkbook.ActiveSheet.DisplayPageBreaks = True 'Показываем границы ячеек
  11.        .DisplayStatusBar = True 'Возвращаем статусную строку
  12.        .DisplayAlerts = True 'Разрешаем сообшения Excel
  13.    End With
  14. End Sub
  15.  
  16.  Private Sub AccelerateExcel() 'Ускоряем Excel путём отключения всего "тормозящего"
  17.    On Error Resume Next
  18.     With Application
  19.         .ScreenUpdating = False 'Больше не обновляем страницы после каждого действия
  20.        .Calculation = xlCalculationManual 'Расчёты переводим в ручной режим
  21.        .EnableEvents = False 'Отключаем события
  22.        If Workbooks.Count Then _
  23.             ActiveWorkbook.ActiveSheet.DisplayPageBreaks = False 'Не отображаем границы ячеек
  24.        .DisplayStatusBar = False 'Отключаем статусную строку
  25.        .DisplayAlerts = False 'Отключаем сообщения Excel
  26.    End With
  27.  End Sub
  28.  
  29. Sub Найти_number_one()
  30.     Dim r As Range, i&, j&, maxRow&, maxColumn&
  31.     Dim n&
  32.     '
  33.    AccelerateExcel 'Ускоряем работу Excel !
  34.    '
  35.    maxColumn = ActiveSheet.UsedRange.Column + ActiveSheet.UsedRange.Columns.Count - 1
  36.     maxRow = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count - 1
  37.     Set r = Range(Cells(1, 1), Cells(maxRow, maxColumn))
  38.     With Worksheets.Add
  39.         For i = 1 To maxRow: For j = 1 To maxColumn
  40.             If r.Cells(i, j) = "номер один" Or i = 1 Then
  41.                 n = n + 1
  42.                 r.Range(r.Cells(i, 1), r.Cells(i, maxColumn)).Copy
  43.                 .Cells(n, 1).Select
  44.                 ActiveSheet.Paste
  45.                 Exit For
  46.             End If
  47.         Next: Next
  48.         For i = 1 To maxRow
  49.             .Cells(i, 1).RowHeight = r.Cells(i, 1).RowHeight
  50.         Next
  51.         For j = 1 To maxColumn
  52.             .Cells(1, j).ColumnWidth = r.Cells(1, j).ColumnWidth
  53.         Next
  54.     End With
  55.     '
  56.    disAccelerateExcel 'Восстанавливаем Excel !
  57.    '
  58. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы