Невозможно скопировать все данные в столбце - Excel VBA

Невозможно скопировать все данные в столбце - Excel VBA

Я пытаюсь скопировать все данные в определенном столбце и вставить их на другой лист в моей рабочей книге через VBA, поскольку это должно быть повторено в нескольких столбцах. По какой-то причине не все данные переносятся, так как есть некоторые пробелы, некоторые данные. Мой код в VBA выглядит следующим образом.

Я новичок в VBA, ценю вашу помощь, спасибо!

wsRawT и wsDetI — это определенные мной переменные для указанного рабочего листа.

wsRawT.Select
    range("AU1").Select
    ActiveCell.Offset(1, 0).range("A1").Select
    range(Selection, Selection.End(xlDown)).Select
    Selection.copy

wsDetI.Select
    range("A1").Select
    ActiveCell.Offset(1, 0).range("A1").Select
    ActiveSheet.Paste

решение1

Sub test()
    Dim wsRawT As Worksheet, wsDetI As Worksheet
    Set wsRawT = ThisWorkbook.Sheets("Sheet1")
    Set wsDetI = ThisWorkbook.Sheets("Sheet2")

    wsRawT.Range(wsRawT.Cells(2, 47), wsRawT.Cells(wsRawT.UsedRange.Rows.Count, 47)).Copy _
           Destination:=wsDetI.Cells(2, 1)

End Sub

P.S.Range("AU2").Column = 47

решение2

Пользовательскую форму можно использовать для копирования столбцов. Пользовательская форма содержит два списка. Заголовки столбцов на листе 1 перечислены в первом списке. Между списками элемент перемещается из списка 1 в список 2 при нажатии кнопки. . Выбранные столбцы из списка 2 копируются на другой лист (лист 2) с помощью метода расширенного фильтра.

Private Sub CommandButton1_Click()
Dim FirstCell, LastCell As Range
Dim basliklar As Integer
Dim baslangic_satiri As Long
Sheets("report").Select
If ListBox2.ListCount = 0 Then
MsgBox "You don't choose filter field "
Exit Sub
End If
ProgressDlg.Show 'Progress Bar

  Set LastCell = Sheets("database").Cells(Sheets("database").Cells.Find(What:="*", SearchOrder:=xlRows, _
      SearchDirection:=xlPrevious, LookIn:=xlValues).Row, _
      Sheets("database").Cells.Find(What:="*", SearchOrder:=xlByColumns, _
      SearchDirection:=xlPrevious, LookIn:=xlValues).Column)
  Set FirstCell = Sheets("database").Cells(Sheets("database").Cells.Find(What:="*", After:=LastCell, SearchOrder:=xlRows, _
      SearchDirection:=xlNext, LookIn:=xlValues).Row, _
      Sheets("database").Cells.Find(What:="*", After:=LastCell, SearchOrder:=xlByColumns, _
      SearchDirection:=xlNext, LookIn:=xlValues).Column)

For basliklar = 0 To ListBox2.ListCount - 1
baslangic_satiri = 2
Sheets("report").Cells(baslangic_satiri - 1, basliklar + 1) = ListBox2.List(basliklar, 0)

Sheets("database").Range(FirstCell, LastCell).AdvancedFilter _
    Action:=xlFilterCopy, CriteriaRange:=Sheets("database").Range(FirstCell, LastCell), _
    CopyToRange:=Sheets("report").Cells(baslangic_satiri - 1, basliklar + 1), _
    Unique:=False
Next
Sheets("report").Columns.EntireColumn.AutoFit
CommandButton6.Enabled = True
End Sub

введите описание изображения здесь

Пример файла

Связанный контент