2015-07-14 4 views
-2

Рассмотрите таблицу со 100 сотрудниками, принадлежащими США, Канаде, Англии, Дании и т. Д. Вам нужно получить макрос VBA, чтобы получить счет всех сотрудников, которые принадлежат к США, Канада, Англия, Дания и т. Д.Получить счет всех сотрудников, которые принадлежат США, используя VBA Macro

Я могу сделать это по формуле, используя CountIfs, но не через макрос VBA.

+0

Вы также можете использовать эту формулу в УВА как 'Count = WorksheetFunction.CountIf (...)'. –

+0

Я действительно новичок в VBA Macro. Не могли бы вы помочь мне полностью написать код. Ниже приведена таблица: Страны \t Сотрудника США \t США \t б США \t с США \t д США \t х США \t е Канады \t г Канады \t ч Канада \t я Канады \t Канада \t b Канада \t c Канада \t d Англия \t х Англии \t х Англия \t г Англии \t ч Англии \t я Англии \t Англия \t б –

+0

Покажите мне вашу формулу первенствовать. –

ответ

1

Здесь мой подход для вас. Попробуйте это.

Sheet2.Range("C5") = WorksheetFunction.CountIfs(Sheet2.Range("B3:B23"), "USA", Sheet2.Range("H3:H23"), "A") 
+0

Вместо окна msg, может ли счет быть сохранен в другой ячейке? –

+0

Да, вы можете. Я также изменил свой ответ. –

+0

Я получаю неверное или неквалифицированное сообщение об ошибке. :( –

0

13 пост, и я не понимаю Wath вам, что я не ответил, почему VBA, почему не превосходит формулы уплотнительного пивот Вы можете США односвязной формулы, где вы хотите, с явными критериями или динамически также enter image description here

+0

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

0
Sub Test() 
Dim Masterworksht As Worksheet 
Dim Oworksht As Worksheet 
Dim intRow, intMRow, intH, intNor, intL, intClosed As Integer 

Set Masterworksht = ThisWorkbook.Worksheets("Master") 
Set Oworksht = ThisWorkbook.Worksheets("Output") 
intRow = 4 

Do 
    intH = 0 
    intNor = 0 
    intL = 0 
    intClosed = 0 
    intMRow = 3 
    Do 
     If (Oworksht.Cells(intRow, 1).Value = Masterworksht.Cells(intMRow, 2).Value) Then 
      If (Masterworksht.Cells(intMRow, 8).Value = "High") Then 
       intH = intH + 1 
      ElseIf (Masterworksht.Cells(intMRow, 8).Value = "Low") Then 
       intL = intL + 1 
      ElseIf (Masterworksht.Cells(intMRow, 8).Value = "Normal") Then 
       intNor = intNor + 1 
      End If 
      If (Masterworksht.Cells(intMRow, 12).Value = "Closed") Then 
       intClosed = intClosed + 1 
      End If 
     End If 
     intMRow = intMRow + 1 
    Loop While Masterworksht.Cells(intMRow, 1).Value <> "" 
    Oworksht.Cells(intRow, 2).Value = intH 
    Oworksht.Cells(intRow, 3).Value = intNor 
    Oworksht.Cells(intRow, 4).Value = intL 
    Oworksht.Cells(intRow, 6).Value = intClosed 
    intRow = intRow + 1 
Loop While Oworksht.Cells(intRow, 1).Value <> "" 

End Sub 
+0

Но проблема в том, что он работает, когда у меня есть 2 разных листа, но не на том же рабочем листе –

+0

Это похоже на продолжение вопроса, а не на ответ. – halfer

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