2015-12-23 12 views
0
If Range("D32").Value = 2 Then 
    If Range("D15").Value = 0 Then 
     Range("D15").Value = 1 
     Range("D32").Value = 1 
    End If 
End If 

Я пытался выяснить, как поместить эти значения внутри a для каждого цикла.Для каждого диапазона строк VBA Excel Macro

В принципе, если D15-> Æ15 = 2 и D32-> AE32 = 0 изменение обоих значений 1.

Я думал о повторив выше вложенных IF заявление для каждой ячейки .. но что бы взять бит времени.

For Each c In Worksheets("sheet1").Range("D32:AE32").Value 

If Range("D32") = 2 Then 


Range("D15").Value = 1 
Range("D32").Value = 1 

End If 
Next c 

Это работает для одной ячейки. Однако я уверен, тупик о том, как получить его, чтобы проверить всю строку, а затем измените соответствующие значения столбцов для 15 и 32, когда один 2.

+0

Извините, я должен был уточнить, что я отредактировал свой первоначальный вопрос. – dan6657

+0

В каждой строке вы должны дать ей коллекцию. 'Для каждой ячейки In Range (" D32: AE32 "). Ячейки' передадут вам все ячейки в этом диапазоне. Я расскажу вам в ответ. – Taelsin

+0

Удивительно, но как бы получить значения для обновления во всей строке? – dan6657

ответ

2

Попробуйте это, вы на правильном пути:

Sub ChgValues() 
    Dim c As Range, d As Range 

    For Each c In Range("D15:AE15") 
     Set d = c.Offset(17, 0) 
     If c.Value = 0 And d.Value = 2 Then 
      c.Value = 1 
      d.Value = 1 
     End If 
    Next c 
End Sub 

Редактировать:
Приведенный выше код проверяет наличие 0 в строке 15 и 2 в строке 32 для всех столбцов от D до AE. Если значения также могут быть наоборот (2 в строке 15, 0 в строке 32), то дополнительное сравнение необходимо:

изменения

If c.Value = 0 And d.Value = 2 Then 

к

If (c.Value = 0 And d.Value = 2) or (c.Value = 2 And d.Value = 0) Then 
+0

Кажется, что это только изменение столбца D. Не s (когда s32 равно 0 и s15 равно 2) Я буду работать с ним, хотя спасибо! – dan6657

1

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

Dim cell As Range 
For Each cell In Range("D15:AE15").Cells 
    If cell.Value = 0 And cell.Offset(17).Value = 2 Then 
     cell.Value = 1 
     cell.Offset(17).Value = 1 
    End If 
Next cell 
Смежные вопросы