I am fairly new to VBA, i require some help creating a Standard Deviation UDF using arrays, i have made a userform that allows a user to select anywhere between 1 to 30 companies (A1: AD1) and its corresponding stockprices (A1:A60) in a sheet called companydata, using the following sub, my problem is that i am unsure how to create a function using the info the user selects. I have also created a returns function (below) but this is vba is saying that there is a out of range error, Will anyone be able to help please.
Below is the code i am using to allow for my sub: ....
I am trying to calculate the Standard Deviation of an array. However, to populate the array, I have the following:
Count Number 1 Count Number 2 CountNumber 3 1 100 2 200 3 300
For example, this above means that there are 1 100's, 2 200's, 3 300's. I would ideally like to populate an array that is {100,200,200,300,300,300} based on those 6 columns that provide a count and a number. Then, I would like to calculate the standard deviation based on those (in this case it is 74.5).
I have tried to find information on this subject, but it seems diifficult to find exactly what I am looking for. I have provided a test example of the operation that I would like to acheive. The first example (Method 1) works well enough but would require defining more detailed functions beyond the scope of average. This would probably be ok, but more importantly, I would like to source particular arrays in this manner for other tasks beyond averages and even standard deviation and am not quite sure how this can be done. In an attempt to describe the situation, I have provided a second example (Method 2). In this example, I am trying to take the average of the jth column array to create an array of averages. I am not sure if I am incorrectly setting up the matrix, if the functions don't perform this way in the matrix, or if this is simply not possible.
Sub test() a = 5 b = 5 Redim X(1 To a, 1 To b) As Double 'Assumes there is a matrix of values [a x b] drawn from worksheet For j = 1 To b For i = 1 To a X(i, j) = Cells(i, j) Next Next
'----METHOD 1--------------------------------------------- 'I know this way works using average as an example, but... Redim AverageX(1 To a, 1 To b) As Double.......................
I am trying to learn VBA and started reading Wallenbach's book and I thought the best way to get up to speed fast was to work on some real problems.
So this is what I am trying to do.
I have a list of about 1000 stock price returns in the following format
jan 1 2008 .033 jan 2 2008 .01 jan 3 2008 -.002 jan 4 2008 -.0033 jan 5 2008 .04
What I want to do is calculate in VBA a moving 3 day standard deviation of returns. So I want the first calculation to include jan 1 - jan 3 and place the answer in the cell to the right of jan 3 return. Then move down 1 row and calculate the standard deviation using jan 2 - jan4 and place the answer in the cell to the right of jan 4 return...and so on until the last cell.
The spreadsheet below shows the Date (Column A), Percentage (Column B), and Standard Deviation (Column C). What I would like is a macro that finds the standard deviation for all percentages of a given date, and for the output to be placed in the first cell of Column C of that given date. If a cell in Column C is not the first for a given date I would like for it to be blank.
Date Percentage Stan Dev (Output) 8/19/09 26.75% 0.77% 8/19/09 26.79% 8/19/09 28.14% 8/19/09 26.57% 8/19/09 26.40% 8/19/09 25.54% 8/19/09 26.61% 9/16/09 36.54% 3.04% 9/16/09 37.27%
I have a dynamic range that I need to be able to calculate the standard deviation for. The dynamic range sometimes has blank cells and #N/A cells which I do not want included in the calculation. However, there are sometimes cells with the number 0 in it (instead of blank) which I do want to include. I have come up with an array formula, but the standard deviation it calculates is not correct. The formula is:
=STDEV(IF(ISNUMBER(A3:A20000)*ISNUMBER(A3:A20000),1,0)). *This is an array formula calculated by pressing CTRL+SHIFT+ ENTER. The number it calculates is 0.43, however, this is incorrect. If you just calculate the standard deviation of the actual data points in excel (cells A138:A5055 in this case) : STDEV(A138:A5055), it returns 0.17. This is the correct standard deviation.
I have a sheet of data in which Column A contains a list of sales agents names and Column B contains their results against their KPIs. All the data is terribly skewed due to new metrics so I have been tasked with attributing 'ranking band' to their performance, i.e. very low, low, medium, high, very high.
I have calculated the average and standard deviation for the list of data, but now I need to calculate which ranges will fall under which ranking band, e.g. very low is less -18%, low is greater than 18% but less than 80%, etc.
I also need to come up with a nested if statement next to each of the sales agents so it returns what ranking brand they are on based on their performance. Sample sheet attached. EDIT - attachment on post #4.
I want to get the standard deviation based on criteria. It looks like this. Criteria is 40 consecutive values ignoring 0 in Column A. A B 1 50 2 20 3 10 0 20 4 10 5 20 .... .... nth
I use manual selection (e.g. =STDEV(B1:B3, B5:B6, etc...) that covers the 40 consecutive rows. B4 here is zero so I did not select it.
My rows is getting bigger and bigger, how could I formulate this?
I am trying to calculate a Robust mean and a robust standard deviation.For Example how to calculate robust mean and robust standard deviation on "Calcium" on the document here: [URL] .......
I have a seris/column of numerical data for which I want to work out percentage differences and then calculate the standard deviation of the percentage differences for all values
For example in column A, I have
row 1 10 row 2 15 row 3 17 row 4 10
I want to work out % difference between row 1 and row 2 (which is 50%), row 2 and row 3 etc and the get the standard deviation of thoose % changes.
I know how to do this on the spreadsheet using formulas but I want to do it using a macro so that the macro returns the standard deviation of the percentage changes because I do not want to have any data showing on the spreadsheet other than the raw data.
kkknie kindly provided the following UDF to work out the the average of the percentage changes but is there code that will work out the standard deviation instead?
I thought maybe excel's built-in standard deviation function (stdev)could be incorporated somewhere into the code but I'm not sure how!
Function AvgPct(rngIn As Range) Dim dblErrAccum As Double Dim intErrCount As Long Dim dblLastVal As Double Dim r as range dblErrAccum = 0 dblLastVal = 0 intErrCount = 0
For Each r In rngIn intErrCount = intErrCount + 1 If intErrCount > 1 Then 'dblErrAccum = dblErrAccum + (r.Value - dblLastVal) / dblLastVal dblErrAccum = dblErrAccum + Abs((r.Value - dblLastVal)) / dblLastVal End If dblLastVal = r.Value Next
I want to calculate the standard deviation of a whole population in my database (total population: 36,458)
I used the STDEV equation however, I went into help and it says that the equation calculates STDEV based on a sample of 30.
I don't want to calculate a standard deviation based on a sample. I want a standard deviation based on the whole population. Is it still okay to use the equation?
The reason I want to calculate the standard deviation is so that I can use that number to calculate the sample size needed for my population so I can create a histogram.
Is there a way to do a stddevif of a sort? I have a flat file with thousands of records and based on criteria I group all records into specific buckets. I need to, without sorting, find the stddev of each group. Can this be done and if so does it require an array function (hopefully not). I dont mind having 3-4 additional columns of arguments to help me compute this (i.e countif, sumif, average, (Variance-average)^2, etc.).
I don't know too much about standard deviation, but I was wondering if somebody could help me with a function to find 1 standard deviation (68%??) from the largest value (not the mean value) within a column of values. What i'm really after is the 'standard deviation boundaries' either side (i.e. 34% of values above the largest value and 34% below the lowest value) as a highlight.
An age-old controversy has resurfaced in our lab regarding the calculation of a mean and standard deviation of a set of two numbers. There have always been those who say that you can't have a standard deviation of two numbers, but now someone has said that a mean of two numbers is meaningless (no pun intended). What is the current thinking on this? Of course, mathematically speaking, you can certainly calculate these values with only two numbers, but is a mean of two numbers not considered a valid measurement? How about a standard deviation?
Basically i have a list of data for example from B2 to B2000 for which i want to calc a standard deviation across however the number of data points in the standard deviation need to be dynamic.
For example in Cell a1 i can enter 150 it will then calc the standard div across the first 150 data points (points 1 to 150) then in the cell below calculate the next standard div.
Standard Div Points10 Data PointData ListStandard div 10.167442459 20.539073451 30.29740845 40.309440859 50.640742715
I'm trying to create a VBA piece to calculate the standard deviation of the difference of two arrays. I have two columns of data and i want to create a third column that is the first minus the second and them calculate the standard deviation of that. My problem is that i wanted to do all of this behind the scenes in VBA (didn't want to output the third column).
I want to find the correct formula to find answers using excel for the folliowing:
1. >3Sds 2. 3SDs<>2SDs 3. 2SDs<>1SD 4. <1SDs
This question uses 3 sigma rule (see attached worksheet) and the formula needs to be re-arranged to meet new criteria. So, we need to consider both sides of nornmal distributiion (ND) curve. eg. when we say >3SD it means it should count all valuee falling in the rage "Mean(Average)+3SD AND Mean-3SD" i.e two extreme ends of the ND cureve. I have inserted a normal distribution diagram and colour coded the ranges so that it will be easy to identify. Please refer comments inserted in K7to N7, cells that contain formula that need to be reset.
I run data sets and use standard deviation frequently but will often times have an issue with the formula. For instance in the following example I use the standard deviation function for the $/Acre column and it returns a value, but using the same data set to try to get a value for the $/WFF column gives the #DIV/0! error message.
Formula for computing the weighted standard deviation? I was able to calculate the weighted average (16.4) but have been unsuccessful in computing the weighted SD. I conducted numerous searches and have not been able to find a posted formula that actually works. My data are as follows:
*The reason I set up the weights the way I did is because I want to give more weight to the more recent years of shootings when comparing them to other years such as 2008, 2009, 2010 and so on.
I'm currently trying to perform some statistical functions on a range of data but with little success.
I want to "AVERAGE" the range and also do a "STDEV" on the range G8:G107 but some of the cells contain #N/A formula errors. I must have the formula returning #N/A to the cells else my chart on the same range plots the empty cell as 0.
What formula can I use that will let me do the standard average and stdev functions on that range, but ignoring the #N/A errors as if they were simply empty cells?