Excel VBA. Si Some Cell a 0, entrez "TBD" dans une autre cellule

Je cherche à remplir automatiquement une cellule avec l'une des trois cordes, PASS, FAIL et TBD

Le code que j'ai ci-dessous fonctionne pour les senerios PASS et FAIL, mais pas pour TBD

Dans une colonne (colonne A), j'ai le nom d'un tas de files. Si le nom du file contient la string "ANT", j'ai une valeur de triggersment, pour remplir un FAIL, d'une valeur inférieure à 9,54

Sinon, réglez la valeur de triggersment à 25.

Ce que j'aimerais en fait, c'est ce qui suit:

Si la valeur contient SPT-SPT (où les assortingcs sont des valeurs avant ou après SPT) j'ai la valeur de triggersment réglée à 25

Sinon, si je vois un 0 dans la colonne H entre "TBD" dans la colonne L

Le dernier code a utilisé une formule et est le suivant:

Sub PassFail() 'Specify which sheet (name) of the active workbook we want to work on With Sheets("(5) Coax Cable Sweeps Table") 'Determine the range we want to put values into With .Range("L1:L" & .Range("A" & .Rows.Count).End(xlUp).Row) 'Put the standard worksheet formula into all cells at once by specifying the formula for the 1st cell only 'Note that any quote marks in the actual formula need to be doubled up at this point 'This line does not consider any zeros for DTF measurments taken without a load .Formula = "=IF(H1<IF(ISNUMBER(SEARCH(""ANT"",A1)),9.54,25),""Fail"",""Pass"")" 'The below formula DOES NOT WORK as intended. '.Formula = "=IF(H1=0,""TBD"",""=IF(H1<IF(ISNUMBER(SEARCH(""""ANT"""",A1)),9.54,25),""""Fail"""",""""Pass"""")"")" .Value = .Value End With End With End Sub 

J'ai alors essayé d'utiliser Si, sinon la logique et je suis arrivé avec ce qui suit:

 Sub PassFail_v1() Dim x As Long Application.ScreenUpdating = False With ActiveWorkbook.Sheets(8) For x = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row If InStr(.Cells(x, 1).Value, "ANT") > 0 Then .Cells(x, 12).Value = IIf(.Cells(x, 8).Value < 9.54, "Fail", "Pass") ElseIf InStr(.Cells(x, 1).Value, "*SPT*-*STP*") > 0 Then .Cells(x, 12).Value = IIf(.Cells(x, 8).Value < 25, "Fail", "Pass") ' Else ' .Cells(x, 12).Value = IIf(.Cells(x, 8).Value = 0, "TBD", " ") End If Next x End With Application.ScreenUpdating = True End Sub 

Ce qui ne fonctionne toujours pas. Certaines cellules de la colonne L sont laissées en blanc, d'autres avec un 0 dans la colonne H montrent TBD dans la colonne L (ce qui est sympa), et d'autres montrent FAILS à 0 lorsqu'ils ne le devraient pas.

Aucun conseil?

Donc, si je comprends votre code et le résultat souhaité, vous regardez la colonne A et si une partie de la string dans A (n) contient "ANT", la valeur à déterminer Pass / Fail est 9.54. Si une partie de A (n) contient la string " SPTSTP ", la valeur pass / fail est 25 (btw, en utilisant des caractères generics dans une search nécessite LIKE et évalue sur un boolean). Cependant, si la colonne H contient 0 , alors L (n) devrait être "TBD" quelle que soit la valeur de A (n), n'est-ce pas? Si tel est le cas, vous avez besoin de deux déclarations IF, avec la colonne d'évaluation H après celle qui évalue la colonne A:

 With ActiveWorkbook.Sheets(8) For x = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row If InStr(.Cells(x, 1).Value, "ANT") > 0 Then .Cells(x, 12).Value = IIf(.Cells(x, 8).Value < 9.54, "Fail", "Pass") ElseIf .Cells(x, 1).Value Like "*SPT*-*STP*" Then .Cells(x, 12).Value = IIf(.Cells(x, 8).Value < 25, "Fail", "Pass") End If If .Cells(x, 8).Value = 0 Then ' .Cells(x, 12).Value = "TBD" End If Next x End With 

Addendum: Il convient de noter que si A (n) ne contient ni "ANT" ni aucune forme de " SPTSTP ", L (n) sera laissé vide. Donc, si vous voyez des cellules dans la colonne L en blanc, regardez la colonne A et déterminez ce que vous voulez faire dans ces cas.

Vous avez inclus la deuxième partie de la formule entre guillemets. Comme cela s'ajoute à la formule, le signe = et les extra citations ne sont pas nécessaires

 .Formula = "=IF(H1=0,""TBD"",""=IF(H1<IF(ISNUMBER(SEARCH(""""ANT"""",A1)),9.54,25),""""Fail"""",""""Pass"""")"")" 

devrait être

 .Formula = "=IF(H1=0,""TBD"",IF(H1<IF(ISNUMBER(SEARCH(""ANT"",A1)),9.54,25),""Fail"",""Pass""))"