2013-12-16 4 views
2

В колонке А на листе 1 имеется 3000 ячеек, которые мне нужно скопировать по 350 ячеек каждый. Мой текущий макрос полностью копирует все, пока я не дойду до конца, и он копирует пробелы. Есть ли способ включить в мои макросы код «ячейка пустой ничего не делать»?Как скопировать диапазон и опустить пустые ячейки?

Извините, если это звучит необразованно, я только начинаю изучать макрос. Вот копия текущего макроса, остальная часть макроса такая же, как это только с увеличением числа на 350.

Sub Copy_Bins_1_350() 
    If Range("D12").Value <> "!" Then 
     Exit Sub 
    ElseIf Range("D12").Value = "!" Then 
     Sheets("sheet1").Select 
     Range("B2:B351").Select 
     Selection.Copy 
     Range("B2").Select 
     Sheets("sheet2").Select 
     Range("E12").Select 
     With Selection.Font 
      .ColorIndex = xlAutomatic 
      .TintAndShade = 0 
     End With 
    End If 
End Sub 

ответ

0

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

Также INTERESTING READ

Попробуйте это (испытанный)

Sub Sample() 
    Dim wsI As Worksheet, wsO As Worksheet 
    Dim aCell As Range, rngCopyFrom As Range, rng As Range 
    Dim lRow As Long 

    Set wsI = ThisWorkbook.Sheets("BIN LIST PASTE") 
    Set wsO = ThisWorkbook.Sheets("BIN LIST COPY") 

    Set rng = wsI.Range("B2:B351") 

    For Each aCell In rng 
     If Len(Trim(aCell.Value)) <> 0 Then 
      If rngCopyFrom Is Nothing Then 
       Set rngCopyFrom = aCell 
      Else 
       Set rngCopyFrom = Union(rngCopyFrom, aCell) 
      End If 
     End If 
    Next 

    If Not rngCopyFrom Is Nothing Then _ 
    rngCopyFrom.Copy wsO.Range("E12") 

    With wsO 
     lRow = .Range("E" & .Rows.Count).End(xlUp).Row 

     Set rng = .Range("E12:E" & lRow) 

     With rng.Font 
      .ColorIndex = xlAutomatic 
      .TintAndShade = 0 
     End With 
    End With 
End Sub 
+0

Спасибо за ответ, однако, это копирует мою информацию на другую страницу, где, как мне нужно только это, чтобы просто скопировать для меня все, кроме пустых. Материал, который я копирую, будет вставлен в другую программу, и эта программа испортится, если есть пробелы. Я тоже пытался испортить его и прочел вашу ссылку, очень интересную, спасибо, что предоставил ее мне. Я подумываю использовать что-то вдоль линий выбора диапазона и помещать в него команду If: Then. НАПРИМЕР. Если пусто, то не копируйте. Или что-то в этом роде. Я просто не уверен, как сделать это на языке excel – Forbidden

+0

Да, он скопирует его на лист «BIN LIST COPY». Вы не хотели его копировать? –

+0

На самом деле нет, хотя страница называется таким образом, мне просто нужны скопированные файлы, чтобы вставить их в другую программу позже. – Forbidden

Смежные вопросы