2015-03-14 2 views
1

Я пытаюсь подсчитать количество ячеек, содержащих определенное значение («N») в определенную строку, которая содержит определенное слово («Эй»).Подсчитайте количество ячеек, содержащих определенное значение («N») в определенной строке, которая содержит определенное слово («Привет»)

Он подходит для первого листа, но не работает для следующего листа. Примечание: «Эй» всегда во втором столбце, однако положение не фиксировано

Вот что я пробовал:

Private Sub macro1() 
Dim SearchString As String 
Dim far As Range 
Dim sh As Worksheet 
Dim c As Integer, count As Integer, i As Integer 

c = 0 
count = 0 
SearchString = "Hey" 
Application.FindFormat.Clear 
For Each sh In ActiveWorkbook.Worksheets 
    sh.Select 
    Range("B1:B100").Select 
    Set far = Cells.Find(What:=SearchString, _ 
     After:=sh.Cells(1, 1), _ 
     LookIn:=xlValues, _ 
     LookAt:=xlWhole, _ 
     SearchOrder:=xlByRows, _ 
     SearchDirection:=xlNext, _ 
     MatchCase:=True, _ 
     SearchFormat:=False) 
    If Not far Is Nothing Then 
     Application.Goto far 
     For i = 3 To 23 
     c = Application.WorksheetFunction.CountIf(Cells(ActiveCell.Row, i), "N") 
     If c Then 
     count = count + 1 
     End If 
     Next i 
    End If 
Next 
MsgBox ("Count= " & count) 
End Sub 

ответ

0

Он работал для меня, но я отмечаю, что

  • вы ищете точное совпадение Hey используя xlWhole. Используйте xlPart, если вы хотите соответствовать «эй находится в этой камере где-то»
  • ваш код не-необходимости выбирает и COUNTIF прикладывается по ячейкам, а не в диапазоне

обновленный код

Private Sub macro1() 
Dim SearchString As String 
Dim far As Range 
Dim sh As Worksheet 
Dim c As Integer, count As Integer 

SearchString = "Hey" 

For Each sh In ActiveWorkbook.Sheets 
    Set far = sh.Range("B1:B100").Find(SearchString, , xlValues, xlWhole, xlByRows, xlNext, True, False) 
    If Not far Is Nothing Then 
      c = Application.WorksheetFunction.CountIf(far.Resize(1, 22), "N") 
      count = count + c 
    End If 
Next 
MsgBox ("Count= " & count) 
End Sub 
+0

Хорошо, на самом деле я намеренно использовал xlWhole, потому что я ищу «Эй» в одиночку, а не как часть. –

+0

И я не знал о countif и благодарю вас за удаление ненужных отборов. –

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