2012-02-01 3 views
1

Нужен простой общий скрипт макроса vba для изменения значения ячейки на основе значения другой ячейки.Нужен простой общий скрипт макроса vba для изменения значения ячейки на основе значения другой ячейки

У меня есть значения в диапазоне от e1: e1000. В любой из этих ячеек в диапазоне, если значение равно «x», тогда его смежные 2 ячейки в соответствующих строках должны изменить значение на «y»

например: if e1 = "x", тогда f1 = "y" и g1 = "у"

Аналогично для других клеток тоже ...

+1

Почему бы просто не использовать формулу? – Reafidy

+0

попробует. .thanks – Sriyad

ответ

2

Srikanth, Reafidy имеет точку. Даже я предпочел бы формулу. Однако, если вы все еще хотите здесь код VBA.

с использованием формулы

Тип этого в ячейке F1 и G1 и просто перетащите его вниз до F1000 и G1000

= IF (E1 = "X", "Y", "")

С ПОМОЩЬЮ КОДА

Sub Sample() 
    Sheets("Sheet1").Range("F1:F1000").Formula = "=If(E1=""X"",""Y"","""")" 
    Sheets("Sheet1").Range("G1:G1000").Formula = "=If(E1=""X"",""Y"","""")" 
End Sub 

РАЗВЕЙТЕ

Sheets("Sheet1").Range("F1:F1000").Formula = "=If(D1=""Ready"",""Ready"","""")" 

ИЛИ если вы не хотите использовать формулы в целом затем использовать этот

Sub Sample() 
    For i = 1 To 1000 
     With Sheets("Sheet1") 
      If .Range("D" & i).Value = "Ready" Then _ 
      .Range("F" & i).Value = "Ready" Else .Range("F" & i).Value = "" 
     End With 
    Next i 
End Sub 

проводившая UP

спасибо за ответ. Я пробовал использовать тот, у кого нет формулы, Но даже это не удается. Я поместил код внутри функции Worksheet_Change. его ошибка бросания с линией «With Sheets» («Sheet1»), хотя Worksheet_Change находится в Sheet1. знаю, почему? - Srikanth Yadake 11 минут назад

Попробуйте

Private Sub Worksheet_Change(ByVal Target As Range) 
    On Error GoTo Whoa 

    If Not Intersect(Target, Range("D1:D1000")) Is Nothing Then 
     Application.EnableEvents = False 
     If Target.Value = "Ready" Then _ 
     Target.Offset(, 2).Value = "Ready" Else Target.Offset(, 2).Value = "" 
    End If 

LetsContinue: 
    Application.EnableEvents = True 
    Exit Sub 
Whoa: 
    MsgBox Err.Description 
    Resume LetsContinue 
End Sub 
+0

спасибо Siddarth попробует .. – Sriyad

+0

Я попытался с вышеуказанным кодом, его не работает. Прямая формула can not используется, потому что ячейка привязана к значениям списка. код, который я использовал, выглядит следующим образом: Листы («Лист1»). Диапазон («F1: F1000»). Формула = «= Если (Диапазон (« «D1: D1000» ») =« «Готов», Ready "", "" "") " – Sriyad

+0

, когда значение в D col в любой строке изменяется на Ready, значение в той же строке столбца F также должно быть изменено на Ready. – Sriyad

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