Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 31
Default function malfunctioning using countif and a variable

Hi,

I have the following function

Function cohort(stap As Double) As Double
cohort = Application.CountIf(Worksheets("deelnemers").Range ("D3:D992"),
"<stap+5") - Application.CountIf(Worksheets("deelnemers").Range ("D3:D992"),
"<stap")
End Function

The problem is that the function does not recognise "stap" in the function.
If i replace stap with a number then the function works. but i need the
number to be a variable..

some additional info
on sheet "deelnemers" there is a list of people with ages in column D
stap is the age of the people. So for example i want to know the number of
people between 30(stap + 5) and 25(stap)

I've been puzzling for ours but no result other then i know wher the function
goes wrong.
any adeas ?


--
Message posted via http://www.officekb.com
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3,440
Default function malfunctioning using countif and a variable

"<"&stap&"+5"

--
Kind regards,

Niek Otten

Microsoft MVP - Excel

"Jean-Pierre D via OfficeKB.com" wrote in message
...
Hi,

I have the following function

Function cohort(stap As Double) As Double
cohort = Application.CountIf(Worksheets("deelnemers").Range ("D3:D992"),
"<stap+5") -
Application.CountIf(Worksheets("deelnemers").Range ("D3:D992"),
"<stap")
End Function

The problem is that the function does not recognise "stap" in the
function.
If i replace stap with a number then the function works. but i need the
number to be a variable..

some additional info
on sheet "deelnemers" there is a list of people with ages in column D
stap is the age of the people. So for example i want to know the number of
people between 30(stap + 5) and 25(stap)

I've been puzzling for ours but no result other then i know wher the
function
goes wrong.
any adeas ?


--
Message posted via http://www.officekb.com



  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 31
Default function malfunctioning using countif and a variable

Hi Niek,

your suggestion doesn't work....

this is my new function:

cohort = Application.CountIf(Worksheets("deelnemers").Range ("D3:D992"),
"<"&stap&"+5") - Application.CountIf(Worksheets("deelnemers").Range ("D3:D992")
, "<stap")

I get a "compile error" in your suggestion

I adapted your suggestion to:

cohort = Application.CountIf(Worksheets("deelnemers").Range ("D3:D992"), "<" &
stap & "+5") - Application.CountIf(Worksheets("deelnemers").Range ("D3:D992"),
"<" & stap)

This generates no error message but now it seems that it generates the number
of items in the list that do not meet the criteria instead of those that do...

with step = 25 i get a respons of 927 while there ar only a few people
between 25-30

any ideas?

I get the message:
Niek Otten wrote:
"<"&stap&"+5"

Hi,

[quoted text clipped - 21 lines]
goes wrong.
any adeas ?



--
Message posted via http://www.officekb.com
  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 11,272
Default function malfunctioning using countif and a variable

Jean-Pierre,

This works for me

With ActiveSheet 'Worksheets("deelnemers")
cohort = Application.CountIf(.Range("D3:D992"), "<" & stap + 5) - _
Application.CountIf(.Range("D3:D992"), "< " & stap)
End With


--

HTH

RP
(remove nothere from the email address if mailing direct)


"Jean-Pierre D via OfficeKB.com" wrote in message
...
Hi Niek,

your suggestion doesn't work....

this is my new function:

cohort = Application.CountIf(Worksheets("deelnemers").Range ("D3:D992"),
"<"&stap&"+5") -

Application.CountIf(Worksheets("deelnemers").Range ("D3:D992")
, "<stap")

I get a "compile error" in your suggestion

I adapted your suggestion to:

cohort = Application.CountIf(Worksheets("deelnemers").Range ("D3:D992"),

"<" &
stap & "+5") -

Application.CountIf(Worksheets("deelnemers").Range ("D3:D992"),
"<" & stap)

This generates no error message but now it seems that it generates the

number
of items in the list that do not meet the criteria instead of those that

do...

with step = 25 i get a respons of 927 while there ar only a few people
between 25-30

any ideas?

I get the message:
Niek Otten wrote:
"<"&stap&"+5"

Hi,

[quoted text clipped - 21 lines]
goes wrong.
any adeas ?



--
Message posted via http://www.officekb.com



  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,646
Default function malfunctioning using countif and a variable

Bob,

I'm interested in an other aspect of this topic: How can one use CountIf
worksheet function without the WorksheetFunction. qualifier?
In the VB Help topic "Using Microsoft Excel Worksheet Functions in Visual
Basic" we are explicitly told that "In Visual Basic, the Microsoft Excel
worksheet functions are available through the WorksheetFunction object.", and
also the examples consistently use the WorksheetFunction. qualifier.
What is the truth?
Regards,
Stefi




€˛Bob Phillips€¯ ezt Ć*rta:

Jean-Pierre,

This works for me

With ActiveSheet 'Worksheets("deelnemers")
cohort = Application.CountIf(.Range("D3:D992"), "<" & stap + 5) - _
Application.CountIf(.Range("D3:D992"), "< " & stap)
End With


--

HTH

RP
(remove nothere from the email address if mailing direct)


"Jean-Pierre D via OfficeKB.com" wrote in message
...
Hi Niek,

your suggestion doesn't work....

this is my new function:

cohort = Application.CountIf(Worksheets("deelnemers").Range ("D3:D992"),
"<"&stap&"+5") -

Application.CountIf(Worksheets("deelnemers").Range ("D3:D992")
, "<stap")

I get a "compile error" in your suggestion

I adapted your suggestion to:

cohort = Application.CountIf(Worksheets("deelnemers").Range ("D3:D992"),

"<" &
stap & "+5") -

Application.CountIf(Worksheets("deelnemers").Range ("D3:D992"),
"<" & stap)

This generates no error message but now it seems that it generates the

number
of items in the list that do not meet the criteria instead of those that

do...

with step = 25 i get a respons of 927 while there ar only a few people
between 25-30

any ideas?

I get the message:
Niek Otten wrote:
"<"&stap&"+5"

Hi,

[quoted text clipped - 21 lines]
goes wrong.
any adeas ?



--
Message posted via http://www.officekb.com






  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 11,272
Default function malfunctioning using countif and a variable

Stefi,

The whole truth, or just part of the truth?

Both methods (Application and WorksheetFunction) will work. Application was
the pre Excel 97 way of doing it and is retained for compatibility, but
there are some nuances in the way they work.

There were problems with some functions in Excel97 and 2000 using the
WorksheetFunction method, which did not surface using Application .

WorksheetFunction (and Application.WorksheetFunction) supports the "auto
list members" option, whereas Application alone does not.
In Excel 97 it was necessary to use Application.WorksheetFunction to get
this auto list, but in later versions WorksheetFunction alone works.

Not all worksheet functions are exposed to VBA. Functions not exposed by the
WorksheetFunction object usually have a
VBA equivalent (e.g., Left, Year), but be aware, they do not necessarily
work in exactly the same way..

Functions within Add-ins, such as the Analysis Toolpak, cannot be called
with Application or WorksheetFunction.
Errors are handled differently. When a function is called directly using
Application (e.g., Application.VLookup) , the result is a variant containing
an error. When called directly using WorksheetFunction (e.g.,
WorksheetFunction .*VLookup), the function will raise an error. Both can be
managed, but in different ways

Dim ans As String

On Error Resume Next
ans = WorksheetFunction.VLookup("value", table_array, 2, False)
On Error GoTo 0
If ans = "" Then
MsgBox "not found using WorksheetFunction"
End If


If IsError(Application.VLookup("value", table_array, 2, False)) Then
MsgBox "not found using Application"
End If


WorksheetFunction is faster, by an order of circa 20%.


--

HTH


RP
(remove nothere from the email address if mailing direct)


"Stefi" wrote in message
...
Bob,

I'm interested in an other aspect of this topic: How can one use CountIf
worksheet function without the WorksheetFunction. qualifier?
In the VB Help topic "Using Microsoft Excel Worksheet Functions in Visual
Basic" we are explicitly told that "In Visual Basic, the Microsoft Excel
worksheet functions are available through the WorksheetFunction object.",

and
also the examples consistently use the WorksheetFunction. qualifier.
What is the truth?
Regards,
Stefi




"Bob Phillips" ezt ķrta:

Jean-Pierre,

This works for me

With ActiveSheet 'Worksheets("deelnemers")
cohort = Application.CountIf(.Range("D3:D992"), "<" & stap + 5) - _
Application.CountIf(.Range("D3:D992"), "< " & stap)
End With


--

HTH

RP
(remove nothere from the email address if mailing direct)


"Jean-Pierre D via OfficeKB.com" wrote in message
...
Hi Niek,

your suggestion doesn't work....

this is my new function:

cohort =

Application.CountIf(Worksheets("deelnemers").Range ("D3:D992"),
"<"&stap&"+5") -

Application.CountIf(Worksheets("deelnemers").Range ("D3:D992")
, "<stap")

I get a "compile error" in your suggestion

I adapted your suggestion to:

cohort =

Application.CountIf(Worksheets("deelnemers").Range ("D3:D992"),
"<" &
stap & "+5") -

Application.CountIf(Worksheets("deelnemers").Range ("D3:D992"),
"<" & stap)

This generates no error message but now it seems that it generates the

number
of items in the list that do not meet the criteria instead of those

that
do...

with step = 25 i get a respons of 927 while there ar only a few people
between 25-30

any ideas?

I get the message:
Niek Otten wrote:
"<"&stap&"+5"

Hi,

[quoted text clipped - 21 lines]
goes wrong.
any adeas ?


--
Message posted via http://www.officekb.com






  #7   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 31
Default function malfunctioning using countif and a variable

Hi Nick,

I have got the solution:

cohort = Application.CountIf(Worksheets("deelnemers").Range ("D3:D992"), "<" &
stap + 5) - Application.CountIf(Worksheets("deelnemers").Range ("D3:D992"),
"<" & stap)

Thanks anyway.

Niek Otten wrote:
"<"&stap&"+5"

Hi,

[quoted text clipped - 21 lines]
goes wrong.
any adeas ?



--
Message posted via http://www.officekb.com
Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Excel lock / Notify feature malfunctioning andrei999 Excel Worksheet Functions 0 June 24th 09 03:28 PM
Automatic value is malfunctioning annie Excel Worksheet Functions 1 July 6th 07 02:10 PM
How to use VBA variable in COUNTIF function? terry Excel Worksheet Functions 10 November 19th 06 05:05 PM
Sorting malfunctioning aposatsk New Users to Excel 10 July 25th 06 09:58 PM
Fitter malfunctioning? itgoeson Charts and Charting in Excel 2 August 3rd 05 10:13 PM


All times are GMT +1. The time now is 09:10 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"