Hi,

Based on the explanation you provided. I've created a workbook which is 
attached herewith. Below are some of the requirements for this to function.

1. There is a sheet called "Time Groups" which contains all the time groups 
in the data once. And they should match the time groups in the data exactly.
2. Cell B2 contains a count of the groups. It is used by the macro to 
understand the number of unique groups in Times Groups.
3. Column F is a column which contains a formula which checks the count of 
the "Country" + "Year" + "Age Group", based on the explanation you provided 
it is seems that the combine CYA should appear 4 times if there are 4 
groups. The program uses this logic to populate the missing information.
4. Run the macro "Insert_Missing_Rows".
5. This has been written in Excel 2007. So if it is run on an earlier or 
later version of excel this might not function as certain VBA functions 
might not be available.

Please run it and let me know if this helps. Holler with questions.

The Code for reference 

Sub Insert_Missing_Rows()
Dim i As Long, j As Integer, k As Integer, cnt  As Integer, TempSheetName 
As String
cnt = 0

For i = 5 To 1000
    If Cells(i, 1) <> "" Then
        If Cells(i, 1) <> Cells(i + 1, 1) And Cells(i, 6) < Cells(1, 2) Then
            Sheet1.Select
            Diff = Cells(1, 2) - Cells(i, 6)
            
            For j = 1 To Diff
            Rows(i + 1 & ":" & i + 1).Select
            Selection.Insert Shift:=xlDown
            Next j
            
            Sheets("Time Groups").Select
            Sheets("Time Groups").Copy After:=Sheets(3)
            TempSheetName = ActiveSheet.Name
            Sheet1.Select
            
            For k = i - (Cells(i, 6) - 1) To i
                For j = 1 To Sheet1.Cells(1, 2)
                    If Cells(k, 4) = Sheets("" & TempSheetName).Cells(j, 1) 
Then
                        Sheets("" & TempSheetName).Select
                        Rows(j & ":" & j).Select
                        Selection.Delete Shift:=xlUp
                        Sheet1.Select
                        Exit For
                    End If
                Next j
            Next k
            
          Sheets("" & TempSheetName).Select
          Range("A1:A" & Diff).Select
          Selection.Copy
          Sheet1.Select
          Range("D" & i + 1).Select
          ActiveCell.PasteSpecial xlPasteAll

          Sheets("" & TempSheetName).Select
          Application.DisplayAlerts = False
          ActiveWindow.SelectedSheets.Delete
          Application.DisplayAlerts = True
          Sheet1.Select
          
          For k = i + 1 To i + (Diff)
            Range("A" & k & ":C" & k).Select
            Selection.FillDown
          Next k
          i = i + (Diff)
        End If
    Else
        Exit For
    End If
Next i

End Sub


Regards,
Damimkader S. Meeran




On Thursday, March 22, 2012 11:40:31 PM UTC+5:30, 0 1 wrote:
>
> I have data like so:
>
> Country Year AgeGroup Time      Count 
> A       05   1        0-6mo     10
> A       05   1        6-12mo    5
> ------------------------------​-------
> B       05   1        0-6mo     12
> B       05   1        12-18mo   4
> B       05   1        18-24mo   75
>
> (I added the "-----" dividing line just to help visualize things ... it's 
> not actually in the spreadsheet.)
>
> Every unique group - defined by unique concatenation of 
> Country+Year+AgeGroup should have four rows, one for each of these Time 
> intervals: 0-6mo, 6-12mo, 12-18mo, and 18-24mo. 
>
> The group defined by CountryA+05+1 is missing rows for 12-18 and 18-24.
> The group defined by CountryB+05+1 is missing rows for 6-12.
>
> How can I automatically detect when a unique group has < 4 rows, and then 
> insert the missing number of rows (doesn't matter where I insert them), 
> imputing the value for County, Year, AgeGroup, and Time (i.e., the Time 
> interval(s) that are missing). Count should get a value of 0. 
>
> So the code would build and add these three rows:
>
> Country Year AgeGroup Time      Count 
> A       05   1        12-18mo   0
> A       05   1        18-24mo   0
> B       05   1        6-12mo    0
>
> Any suggestions?
>
>

-- 
FORUM RULES (986+ members already BANNED for violation)

1) Use concise, accurate thread titles. Poor thread titles, like Please Help, 
Urgent, Need Help, Formula Problem, Code Problem, and Need Advice will not get 
quick attention or may not be answered.

2) Don't post a question in the thread of another member.

3) Don't post questions regarding breaking or bypassing any security measure.

4) Acknowledge the responses you receive, good or bad.

5)  Cross-promotion of, or links to, forums competitive to this forum in 
signatures are prohibited. 

NOTE  : Don't ever post personal or confidential data in a workbook. Forum 
owners and members are not responsible for any loss.

------------------------------------------------------------------------------------------------------
To post to this group, send email to excel-macros@googlegroups.com

Attachment: Book1.xlsb
Description: application/vnd.ms-excel.sheet.binary.macroenabled.12

Reply via email to