2015-07-05 2 views
0

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

Любое предложение очень ценится. Спасибо!

+0

Используйте записи макросов, чтобы узнать о копировании и вставке, а затем обернуть этот код в 'Для цикла Each' для всех ячеек, которые вы хотите проверить, и для каждого из них, проверьте, пусто или нет их значение: 'If Range.Value =" "Then ...' – nhee

+0

Разве это не похоже на ваш предыдущий поток? – Davesexcel

+0

Я получил копию и вставку, но не знал, какой синтаксис использовать для оператора if. Во всяком случае, подход, который мне нужно сделать, это использовать цикл для проверки каждой ячейки, если они пустые или не правильные? – synthaxe

ответ

0

Это копирует ячейку значение из столбца 1 (UsedRange) в колонку 2, если ячейка не пуста:


Option Explicit 

Public Sub copyIfNotEmpty() 

    Dim cel As Range, lRow As Long 

    'next line determines the last row in column 1 (A), of the first Worksheet 
    lRow = Worksheets(1).UsedRange.Columns(1).Rows.Count 

    'iterate over every cell in the UsedRange of column A 
    For Each cel In Worksheets(1).Range("A1:A" & lRow) 

     'cel represents the current cell 
     'being processed in this iteration of the loop 

     'Len() determines number of characters in the cell 
     If Len(cel.Value2) > 0 Then 

      'if cel is not empty, copy the value to the cell next to it 

      'cel.Offset(0, 1): cell that is offset from current cell 
      ' - 0 rows from current cell's row (1 would be row below, -1 row above) 
      ' - 1 column to the right of current cell's column (-1 is column to its left) 

      cel.Offset(0, 1).Value2 = cel.Value2 

     End If 

    Next 'move on the next (lower) cell in column 1 

End Sub 
+0

Я не хочу звучать глупо или что-то в этом роде, но im kinda new в vba, и, если вы может объяснить, что делает этот код, что было бы замечательно – synthaxe

+0

Нет проблем: я обновлю свой ответ –

+0

Спасибо, помощник! Оцените усилия – synthaxe

0

Смотрите пример видео здесь, я поставила 2 примеров, петлю и фильтр , https://youtu.be/a8QJ9BAHlhE

sample workbook.

Sub LoopExample() 
    Dim Rws As Long, rng As Range, c As Range 

    Rws = Cells(Rows.Count, "A").End(xlUp).Row 
    Set rng = Range(Cells(2, "A"), Cells(Rws, "A")) 

    For Each c In rng.Cells 
     If c <> "" Then 
      c.Copy Cells(Rows.Count, "C").End(xlUp).Offset(1, 0) 
     End If 
    Next c 
End Sub 
Sub FilterExample() 
    Dim Rws As Long, rng As Range 

    Rws = Cells(Rows.Count, "A").End(xlUp).Row 

    Columns("A:A").AutoFilter Field:=1, Criteria1:="<>" 
    Set rng = Range(Cells(2, "A"), Cells(Rws, "A")) 
    rng.Copy Range("D2") 
    ActiveSheet.AutoFilterMode = 0 
End Sub 
Смежные вопросы