Копировать данные с одного листа на другой, используя VBA - PullRequest
0 голосов
/ 10 июня 2011

в Excel 2007, пытаясь перебрать столбец (не фиксированной длины) (скажем, C) и, где значение строки совпадает (скажем, «High»), затем передать значение ячеек Dx и Bx на «передачу» листа в новую строку,где x - строка #, где найдены совпадения.Предположим, "передача" существует.

Пока у меня есть это:

Public Sub CopyRows()
  Sheets("Sheet1").Select 

  'Find the last row of data
  LastRow = Cells(Rows.Count, 1).End(xlUp).Row

  'Loop through each row
  For x = 1 To FinalRow
    'Decide if to copy based on column C
    ThisValue = Cells(x, 3).Value

    If ThisValue = "High" Then
      Cells(x, 1).Resize(1, 33).Copy
      Sheets("Transfer").Select
      NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
      Cells(NextRow, 1).Select
      ActiveSheet.Paste
      Sheets("Sheet1").Select
    End If
  Next x
End Sub 

Ответы [ 2 ]

1 голос
/ 10 июня 2011

На самом деле это лучше всего сделать с помощью расширенного фильтра.

Создайте два диапазона - один для условия (заголовок и ячейка):

*C column header* |
-------------------
High              |

и один для требуемых данных (только заголовок):

*B column header* | *D column header*
-------------------------------------

Затем используйте

range("A:D").advancedfilter xlFilterCopy, range("criteria range"), range("copy range")

Очевидно, что это проще сделать с помощью интерфейса Excel (Данные - Расширенный фильтр).

1 голос
/ 10 июня 2011

Я бы не пошел по этому пути. Я считаю, что сначала нужно настроить фильтр и скопировать только видимые строки, и это будет работать быстрее и проще в кодировании.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...