Вложенные условия в VBA - PullRequest
       1

Вложенные условия в VBA

0 голосов
/ 20 февраля 2019

Я новичок в Excel и VBA, поэтому извиняюсь за глупый вопрос или ошибку.

У меня есть около 2000 данных Excel на листе 2 и данные запроса на листе 1

Sample image please check this

Мне нужно знать, сколько билетовначинается с INC и приоритет P2 P3 там и таким же образом, сколько билетов, которые начинаются с SR там.также из них, сколько находится в закрытом состоянии и сколько активно.

Sub US_Data()
Dim z As Long
Dim C As Range

z = Sheet2.Cells(Rows.Count, 1).End(xlUp).Row
For Each C In Sheet2.Range(Sheet2.Cells(2, 1), Sheet2.Cells(z, 1))
  If Left(C.Value, 3) = "INC" Then
    Sheet1.Cells(8, 6) = Sheet1.Cells(8, 6) + 1

  End If
Next C
End Sub

Спасибо

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Зачем вообще использовать VBA?Это можно сделать с помощью простых формул.Если вы не хотите использовать сводные таблицы, создайте заголовки вручную (синий на снимке экрана), затем поместите эту формулу в ячейку H3, скопируйте ее по горизонтали и влево.

=COUNTIFS($A:$A,$G3&"*",$B:$B,H$1,$C:$C,H$2)

enter image description here

Измените макет, если хотите.Дело в том, что вам не нужен VBA для этого.Формулы будут намного быстрее, чем заново изобретать CountIfs с VBA.

0 голосов
/ 20 февраля 2019
Sub US_Data()
Dim z As Long
Dim HighCount as Long
Dim ModerCount as Long
Dim LowCount as Long
Dim OpenCount as Long
Dim ClosedCount as Long
Dim C As Range

z = Sheet2.Cells(Rows.Count, 1).End(xlUp).Row

For Each C In Sheet2.Range(Sheet2.Cells(2, 1), Sheet2.Cells(z, 1))
    If Left(C.Value, 3) = "INC" Then
        If C.Offset(0,1).Value = "2 - High" Then HighCount = HighCount + 1
        If C.Offset(0,1).Value = "3 - Moderate" Then ModerCount = ModerCount + 1
        If C.Offset(0,1).Value = "4 - Low" Then LowCount = LowCount + 1
        If C.Offset(0,2).Value = "Closed" Then ClosedCount = ClosedCount + 1
        If C.Offset(0,2).Value = "Open" Then OpenCount = OpenCount + 1
    End If
Next C

MsgBox "I have counted " & HighCount & " times High, " & ModerCount & " times Moderate, " & LowCount & " times Low, and respectively " & OpenCount & " and " & ClosedCount & " open and closed instances.", vbOkOnly, "FYI"

Sheet1.Cells(8, 6) = HighCount
End Sub

Это будет один из способов сделать это, вы можете заполнить ячейки, необходимые этими переменными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...