Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 307
  • Last Modified:

CountIfs function to call in formula

I have a function for a countif.  It is:

Function myCountIf(rng As Range, criteria) As Long
     Dim ws As Worksheet

     For Each ws In ThisWorkbook.Worksheets
         If ws.Name <> "Metrics" And ws.Name <> "TFSData" Then
             myCountIf = myCountIf + WorksheetFunction.CountIf(ws.Range(rng.Address), criteria)
         End If
     Next ws
 End Function

 I have a spreadsheet that has a formula in one cell.  I call this function by:  =myCountIf(B:B,A15).  This will go to every sheet in the workbook that is not in the If clause, and get the values that match the value in A15.  I need a countifs function.  I want the formula to go through each sheet not listed in the If clause, look for the value in column B that matches the A15 cell value of the current sheet And then count the value in the H column of that row.

I tried changing the function myCountifs line in the following way but it did not work:

 myCountIfs = myCountIfs + WorksheetFunction.CountIfs(ws.Range(rng.Address), criteria, ws.Range(rng.Address), criteria)  

I called it by writing:  -myCountIfs(B:B,A15,H:H,"1")

I get the #VALUE! in the cell.  Anyone know what is wrong with it?
0
Kathtg
Asked:
Kathtg
  • 3
  • 3
1 Solution
 
Glenn RayExcel VBA DeveloperCommented:
Quick answer:
Your function only as two arguments - a range and criteria.  Your new function needs to have the option for more, plus it has a different name (plural).

This is just a tweak of your original function; not tested:

Function myCountIfs(rng As Range, criteria As Variant, Optional rng2 As Range, Optional Criteria2 As Variant) As Long
      Dim ws As Worksheet

      For Each ws In ThisWorkbook.Worksheets
          If ws.Name <> "Metrics" And ws.Name <> "TFSData" Then
              myCountIfs = myCountIfs + WorksheetFunction.CountIfs(ws.Range(rng.Address), criteria, (w2.Range(rng2.Address), Criteria2)
          End If
      Next ws
End Function

Open in new window


Regards,
-Glenn
0
 
KathtgAuthor Commented:
Thanks, unfortunately that didn't work for me either.  I added a parenthesis to the end, and then played with variations to no avail.  I still get the #NAME.

I was able to get this working in the formula - where I named the spreadsheets directly:
COUNTIFS(James!B:B,A20,James!H:H,"1")+COUNTIFS(Michael!B:B,A20,Michael!H:H,"1")+COUNTIFS(Komal!B:B,A20,Komal!H:H,"1")+COUNTIFS(Trina!B:B,A20,Trina!H:H,"1")

I'm going to try a variation with this in VBA, maybe I'll have better luck.  I'll post if it works.
0
 
Glenn RayExcel VBA DeveloperCommented:
The #NAME error means that the function name is different than what you typed in the cell.  They both need to be myCountifs.
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
KathtgAuthor Commented:
Thanks.  I selected it from the function dropdownlist so I know I typed it correctly.  My excel has been having weird problems - like my copy,paste stopped working, etc).  Let me try a brand new workbook.
0
 
KathtgAuthor Commented:
Workbook change didn't help but I ended up removing the myCountIfs and changing the information in myCountIf to match.  It worked!
 
Here is the final:
Function myCountIf(rng As Range, criteria, rng2 As Range, criteria2 As Variant) As Long
    Dim ws As Worksheet

    For Each ws In ThisWorkbook.Worksheets
        If ws.Name <> "Metrics" And ws.Name <> "TFSData" And ws.Name <> "TFSBugs" Then
            myCountIf = myCountIf + WorksheetFunction.CountIfs(ws.Range(rng.Address), criteria, ws.Range(rng2.Address), criteria2)
        End If
    Next ws
End Function


Thank you thank you!!
0
 
Glenn RayExcel VBA DeveloperCommented:
You're welcome x 2.  You really were on the right track; I just nudged you a bit.
0

Featured Post

[Webinar On Demand] Database Backup and Recovery

Does your company store data on premises, off site, in the cloud, or a combination of these? If you answered “yes”, you need a data backup recovery plan that fits each and every platform. Watch now as as Percona teaches us how to build agile data backup recovery plan.

  • 3
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now