在每个参数中设置值VBA excel

栏目:

ABC A001 OK A002 OK A003 OK A004 OK A004 OK A004 OK A004 OK A004 OK A004 OK A004 OK A004 OK A004 OK A004 OK A004 OK A004 OK A004 OK A004 OK A004 OK A004 OK A004 NO A004 OK A004 OK A004 OK A004 OK A006 OK A007 OK A008 OK A010 OK A010 OK A015 OK A015 NO 

我想检查列A和B上的值。如果列B具有“OK”值,那么该参数中的列C值是“OK”但是如果在每个上只有“否”,则所有的复制参数值都是“否”在列C.我使用下面的代码。

 for i= 1 to 100 If Cells(i,1).value="A001" and cells(i,2).value="OK" then Cells(i,3).value "OK" end if next i 

但C列中没有这个值

我应该怎么做?

我会build议使用这个公式。 所以你可以使用

 =IF(AND(A1="A001",B1="OK"),"OK","") 

现在回答你的问题

  1. 这可能是因为您缺less“=”loginCells(i,3).Value "OK"

  2. 这可能是因为您要写入的工作表可能没有激活? 因此,你应该总是限定你的对象。 就像ThisWorkbook.Sheets("Sheet1").Cells(i,1)所以你的代码变成了

     For i = 1 To 100 With ThisWorkbook.Sheets("Sheet1") If .Cells(i, 1).Value = "A001" And .Cells(i, 2).Value = "OK" Then .Cells(i, 3).Value = "OK" End If End With Next i 
  3. 如果它仍然不起作用,那么可能在A列和B列的文本中存在空格。然后,您可能希望将上述代码修改为此

     For i = 1 To 100 With ThisWorkbook.Sheets("Sheet1") If UCase(Trim(.Cells(i, 1).Value)) = "A001" And UCase(Trim(.Cells(i, 2).Value)) = "OK" Then .Cells(i, 3).Value = "OK" End If End With Next i