2016-09-21 1 views
0

Я имею первенствовать, как показано ниже,цикл в два раза в vba?

Src Base June July 
    Eng STP 10 20 
    Sve STP 20 30 
    GMO SEZ 30 10 
    Eng STP 20 30 
    Sve SEZ 40 50 

Здесь я хочу Переберите все основанные на состоянии, как .. STP должен быть упал в STP листа вместе с добавлением Eng полей в нем ОЭЗ должны попадать в ОЭЗ лист вместе с соответствующими столбцами

Я не могу с петлей каждом случае здесь ..

Мой суд был, как показано ниже ..

With Worksheets("Mktg.Effort") 
    For lrow = 2 To .Cells(.Rows.Count, "R").End(xlUp).Row 
    Select Case CStr(Cells(lrow, "R").Value) 
    Case "STP" 
    Worksheets("Mktg.Effort").Rows(lrow).Activate 
    For lroww = 1 To .Cells(.Rows.Count, "A").End(xlUp).Row 
    Select Case CStr(Cells(lroww, "A").Value) 
    Case "engg" 
     ' adding all eng cols 
     ' and this data should fall in STP sheet. 

Здесь я получаю все поля Eng независимо от условий базы (STP/SEZ). Я хочу контактировать с обоими условиями: 1. должен проверить, есть ли STP/SEZ 2. Должен проверить, стоит ли Eng/Sve/gmo и, соответственно, я должен автоматизировать данные.

ENy help please. Меня здесь нет, и я не понимаю.

Ожидаемый результат:

 Src Base June July 
    Eng STP 30 50 ' added all ENG into one row 
    Sve STP 20 30 
+0

Это своего рода трудно понять, что вы хотите. Вы спрашиваете, как проверить сразу два условия? Просто используйте 'If condition1 And condition2 Then'. Это не будет считаться «циклом дважды», хотя, потому что ... ну, вы только зацикливаете один раз. Использование 'Select Case' выглядит вроде излишним, если вы не хотите добавить больше случаев. О, а также сравнения строк в основном чувствительны к регистру. – arcadeprecinct

+1

Некоторые из ваших вызовов сотовой связи не содержат точек, поэтому обратитесь к активному листу, а не к вашему. С блочным листом –

+0

@arcadeprecinct. Здесь я хочу, чтобы все строки с STP были в одном цикле и в этом цикле. Мне нужно снова проверить на случай, если это eng/sve/gmo Если это условие выполнено, мне нужно взять эту строку как активную строку. Не могли бы вы проверить мой отредактированный вопрос с ожидаемым выходом –

ответ

0

Вместо цикла дважды вы можете цикл один раз, а затем проверить состояние что-то, как показано ниже:

With Worksheets("Mktg.Effort") 
    For lrow = 2 To .Cells(.Rows.Count, "R").End(xlUp).Row 
    Select Case CStr(Cells(lrow, "R").Value) 
    Case "STP" 
     If CStr(Cells(lrow, "A").Value) = "Eng" Then 
      ' adding all eng cols 
      ' and this data should fall in STP sheet. 
     ElseIf CStr(Cells(lrow, "A").Value) = "SVE" Then 
      '....and so on 
+1

Помогла мне поблагодарить –

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