シートをトレースし、ブランク値または0値(または "NaN")値として戻ってくるセルを強調表示しようとしています。私はこれを行うためにネストされたforループを書いたが、私は奇妙なアイテムを見ている。VBAでゼロ値が欠損値として読み込まれています
値が0の場合、セルは赤に変わります。ただし、マクロを実行すると、if statement
の条件をパスするすべてのセルが0になっても黄色で終了します。空白のセルを0にするか、セルが真に空白ではないのですか?私は間違いを犯したのですか、あるいは私はVBAの論理について間違っていますか? Excelで
'i is for the columns
For i = 2 To 4 'lastColumn
totalCounter = 0
outageCounter = 0
missingCounter = 0
'j is for the rows
For j = 6 To lastRow
'highlight if production outage
If mainSheet.Cells(j, i).Value = 0 Then
mainSheet.Cells(j, i).Interior.Color = vbRed
outageCounter = outageCounter + 1
End If
'highlight if comm outage
If mainSheet.Cells(j, i).Value = "" Or mainSheet.Cells(j, i).Value = "NaN" Then
mainSheet.Cells(j, i).Interior.Color = vbYellow
missingCounter = missingCounter + 1
End If
totalCounter = totalCounter + 1
Next j
mainSheet.Cells(lastRow + 2, i).Value = missingCounter
mainSheet.Cells(lastRow + 3, i).Value = outageCounter
mainSheet.Cells(lastRow + 4, i).Value = totalCounter
私はあなたが正しいと信じています - あなたの最初の「IF」は、セルの値が空白の場合でも真です。 – vknowles
好奇心:それを使用しているときに「NaN」とは何ですか? AFAIKでは、データに「NaN」という文字列が含まれていない限り、ExcelにはNaN値(「数字ではない」)がありません。 – vknowles
あなたのコードは、空のセル、 '" "'を含むセル、 '' NaN ''を含むセルを黄色に(非常に短い時間空のセルを最初に赤に変更した後)設定します。しかし、あなたの質問で言うように、あなたのコードが「0」を含むセルを黄色に変えなければならない理由はありません(「if文の条件を通過するすべてのセルが0になっても黄色で終わる」)。 '0'を含むセルが黄色になることを100%確信していますか? – YowE3K