2016-05-11 3 views
0

Я хочу написать один код vba, который будет искать данные из определенного столбца листа 1 и скопировать эти строки и вставить их в sheet2. Я написал код, но нашел там одну проблему. вот приведенный ниже код.Программирование Excel VBA для копирования определенных строк из ячейки sheet1 в sheet2

Sheets("Sheet1").Select 
    Range("D1").Select 
    Dim mycode As Worksheet 
    Set mycode = ThisWorkbook.Worksheets("Sheet2") 
    Dim i As Long 
    For i = 2 To Cells(Rows.Count, "D").End(xlUp).Row 
     If Cells(i, 4).Value = "high" Then 
      Range(Cells(i, 1), Cells(i, 8)).Copy Destination:=mycode.Range("A" & mycode.Cells(Rows.Count, "A").End(xlUp).Row + 1) 
      ElseIf Cells(i, 4).Value <> "high" Then 
      Sheets("Sheet2").Select 
      Range("A2").Value = "No Crtical Logs Found" 
      End If 
     Next i 
    End Sub 

Из столбца Sheet1 D (number4) Я ищу данные, соответствующие «высоким», и скопируйте эти строки на лист2. И если какой-либо из «высоких» не существует в столбце D, то в ячейке A2 на листе 2 будет записано «No action required». Но проблема в том, что «высокое» значение там не работает, но когда «высокое» значение присутствует в столбце столбца D1, тогда все значение времени «без действия» приходит на ячейку A2 на листе2. Пожалуйста, помогите мне исправить это.

No Crtical Logs Found 4/11/2016 Critical high  192.168.1.1 This is the sample excel sheet Action Required 

С уважением, Пинаки

ответ

0

Вы трогании Лист1 слишком скоро:

Sub fhskdfh() 
    Sheets("Sheet1").Select 
    Range("D1").Select 
    Dim mycode As Worksheet 
    Set mycode = ThisWorkbook.Worksheets("Sheet2") 
    Dim i As Long 
    For i = 2 To Cells(Rows.Count, "D").End(xlUp).Row 
     MsgBox i & vbCrLf & Cells(i, 4).Value 
     If Cells(i, 4).Value = "high" Then 
      Range(Cells(i, 1), Cells(i, 8)).Copy Destination:=mycode.Range("A" & mycode.Cells(Rows.Count, "A").End(xlUp).Row + 1) 
     End If 
    Next i 
End Sub 
+0

Привет, Гари, мне не нужен msgbox для отображения «высоких» «низких» значений, а я хочу скопировать значения «High» и вставить на sheet2 и «низкие» значения «no action» msg будет отображаться на ячейка 2 листа A2. но когда строки «высоких» значений наклеиваются на лист2, на ячейке A2 sheet2 также появляется сообщение «no action» msg. –

0

Изменить пункт назначения из "No Crtical Логи Found" сообщение
От

Sheets("Sheet2").Select Range("A2").Value 


Для

Sheets("Sheet2").Range("A2").Value 

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

+0

Привет, Гленн, Спасибо за ваш комментарий. У меня есть столбец (позволяет предположить cloumn D), который состоит из значения как «Низкий» и «Высокий», и мой код должен выглядеть, когда найдены «высокие» значения (обратите внимание: в столбце D также должны быть значения «Низкий») но могут появиться «высокие» значения) из Sheet1, весь столбец (колонки) скопирует и вставляет их в sheet2. Но когда столбец содержит только значения «Низкий», время, в течение которого на ячейке A2 на листе2 отображается сообщение «Нет действий», а когда столбец D содержит «высокие» значения вместе с «низкими» значениями, то он копирует эти «высокие» значения и вставляет на листе2, но ячейка A2 также показывает «Нет действий». –

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