Проверьте, имеет ли вся строка значение 0 - PullRequest
0 голосов
/ 30 января 2020

У меня есть лист Excel "Sheet1" с номером недели в A1. У меня есть другой лист "Sheet2" с номерами недель в столбце A. В столбцах от B до Z содержатся номера, соответствующие номерам недель.

Теперь я хочу проверить с помощью VBA всю ли строку, столбец B - Z на "Sheet2" "содержит значение 0 (ноль)

Как я могу это сделать?

У меня есть этот код, чтобы выбрать строку c, соответствующую номеру недели на листе 1:

Dim WeekNr As Long
WeekNr = Sheets("Sheet1").Range("A1")
Sheets("Sheet2").Cells(WeekNr + 2, 2)

Но я не знаю, как проверить, содержит ли каждая ячейка ноль от B до Z.

Ответы [ 2 ]

2 голосов
/ 30 января 2020

У вас есть два разных запроса, поэтому я в замешательстве. Обращаясь к обоим ...

Я хочу проверить с помощью VBA, содержит ли вся строка, столбец от B до Z на «Листе 2» значение 0 (ноль)

Решение не VBA

=COUNTIF(B1:Z1,0)>0

Решение VBA

Dim ws As Worksheet
Set ws = Sheets("Sheet2")

If Application.WorksheetFunction.CountIf(ws.Range("B1:Z1"), 0) > 0 Then
    MsgBox "Found"
Else
    MsgBox "not Found"
End If

Но я не знаю, как проверить, содержит ли каждая ячейка ноль от B до Z.

Решение без VBA

=IF(SUM(B1:Z1)>0,"Not Every Cell has 0","Cell has 0 or blank values")

Решение VBA

Dim ws As Worksheet
Set ws = Sheets("Sheet2")

If Application.WorksheetFunction.Sum(ws.Range("B1:Z1")) > 0 Then
    MsgBox "Not Found"
Else
    MsgBox "Found"
End If

ПРИМЕЧАНИЕ : Если вы хотите проверить только на 0, а не на пустые ячейки, вы также можете использовать это

Non VBA Solution

=COUNTIF(B1:Z1,0)=25

VBA Solution

Dim ws As Worksheet
Set ws = Sheets("Sheet2")

If Application.WorksheetFunction.CountIf(ws.Range("B1:Z1"), 0) = 25 Then
    MsgBox "All cells have 0"
Else
    MsgBox "All cells do not have 0"
End If
0 голосов
/ 30 января 2020

Попробуйте проверить, равно ли значение 0 или нет (он получит значения из активного листа, вы можете использовать любой лист с именем листа в соответствии с вашими требованиями)

Sub checkzeros()
    Dim weekRange As Range
    Set weekRange = Range("B1:Z1")
    For Each cell In weekRange
        Debug.Print cell.Value
        If cell.Value = 0 Then
            ' do what ever yu want if value is 0
        Else
            ' do what ever yu want if value is not 0
        End If
    Next cell
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...