Solved

Excel - Identifying most common series of date values

Posted on 2013-12-13
6
405 Views
Last Modified: 2013-12-14
Hi,

I have an Excel workbook (attached) that has 5 groups and each group has a series of date ranges.  The number of groups and number of date ranges are not fixed so another example could have say 15 groups and each group has 7 date ranges.

01/01/2013      31/12/2013
01/01/2014      31/12/2014
01/01/2015      31/12/2015
01/01/2016      31/12/2016
01/01/2017      31/12/2017
      
01/01/2005      31/12/2005
01/01/2006      30/09/2006
01/10/2006      31/12/2006
01/01/2007      31/12/2007
01/01/2008      31/12/2008
      
01/01/2005      19/04/2005
20/04/2005      31/12/2005
01/01/2006      31/12/2006
01/01/2007      19/04/2007
20/04/2007      19/04/2008
      
01/01/2005      31/12/2005
01/01/2006      31/12/2006
01/01/2007      31/12/2007
01/01/2008      31/12/2008
01/01/2009      31/12/2009

01/01/2005      31/12/2005
01/01/2006      31/12/2006
01/01/2007      31/12/2007
01/01/2008      31/12/2008
01/01/2009      31/12/2009

I need to determine the groups that have exactly the same series of date ranges.  In the attached workbook VBA was used to insert a formula in column C for the first date range in each group that concatenated the date start and end dates for each date range in that group.  The result is a long string of values.

The VBA then inserted a COUNTIF formula in column D to return the number of instances that the long string in column C occurred.  In the attached example the last 2 groups have exactly the same start and end dates.  Consequently, the values returned by the COUNTIF  formulae should be:     1,  1,  1, 2,  2

However, the values are:    1,  3,  1, 3,  3

I suspect the unexpected COUNTIF results arise from the very long strings involved.  I would really appreciate help with how I can get the results I am expecting in column D.

Many thanks in advance
Alison
Example.xls
0
Comment
Question by:alisonthom
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
6 Comments
 
LVL 11

Accepted Solution

by:
Angelp1ay earned 300 total points
ID: 39717994
I re-wrote your macro and it works fine :)
Sub MakeDateUids()
    ' Worksheet and ranges
    Dim sh As Worksheet
    Set sh = ActiveSheet
    
    Dim summaryCell, currentCell As Range
    Set summaryCell = Nothing
    
    ' Rows
    Dim row, firstRow, lastRow As Integer
    lastRow = sh.UsedRange.Rows.Count
    If sh.Cells(1, 1).Value <> "" Then
        firstRow = 1
    Else
        firstRow = sh.Cells(1, 1).End(xlDown).row
    End If
    
    ' Clear
    sh.Range("C:C").Clear
    
    ' Loop
    For row = firstRow To lastRow
        Set currentCell = sh.Cells(row, 1)
        If currentCell.Value <> "" Then
            If summaryCell Is Nothing Then Set summaryCell = currentCell.Offset(0, 2)
            summaryCell.Value = summaryCell.Value & CDbl(currentCell.Value) & CDbl(currentCell.Offset(0, 1).Value) & "/"
        Else
            Set summaryCell = Nothing
        End If
    Next
    
End Sub

Open in new window

DateGroups.xls
0
 
LVL 81

Expert Comment

by:byundt
ID: 39718254
Angelplay,
Unlike other languages (like VB.Net), in VBA you must declare each variable as something. Otherwise, it becomes a Variant.
Dim row, firstRow, lastRow As Integer         'row and firstRow are Variant, lastRow is Integer

Open in new window


Also, you should get in the habit of declaring integer variables as Long. Integer variables are padded with blank bits when stored in Windows apps, so they don't save any memory compared to Long variables. An Integer variable will cause a fatal overflow error if you exceed row 2^15-1 (32767)--something quite possible in a worksheet with 1048576 rows. The maximum value of a Long is 2^31-1 (2147483647)

Brad
0
 
LVL 11

Expert Comment

by:Angelp1ay
ID: 39718350
@byundt - Whoops. I normally put quite a lot of content into the comment but must have been falling asleep. Thanks for the tips on my 'ints', did not know either of those points.
0
 

Author Closing Comment

by:alisonthom
ID: 39718430
Hi Angelplay
thanks very much indeed for the quick and really helpful answer.  It works perfectly.
Alison
0
 
LVL 11

Expert Comment

by:Angelp1ay
ID: 39718597
You're most welcome Alison. Have a lovely day :)
0

Featured Post

Free Tool: Postgres Monitoring System

A PHP and Perl based system to collect and display usage statistics from PostgreSQL databases.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction This Article briefly covers methods of calculating the NPV and IRR variants in Excel as well as the limitations in calculating and interpreting IRR results. Paraphrasing Richard Shockley, author of my favourite finance reference tex…
Do you use a spreadsheet like Microsoft's Excel?  Have you ever wanted to link out to a non excel file on your computer or network drive?  This is the way I found to do it!
The viewer will learn how to use the =DISCRINV command to create a discrete random variable, use this command to model a set of probabilities and outcomes in a Monte Carlo simulation, and learn how to find the standard deviation of a set of probabil…
The viewer will learn how to create two correlated normally distributed random variables in Excel, use a normal distribution to simulate the return on different levels of investment in each of the two funds over a period of ten years, and, create a …

756 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question