I'm working on a project where I have sales data broken down into quarters. What I need to do is in front of each column insert the three months that belong in that quarter. I started with a select case statement, but then realized that probably isn't the best way to do it. What I want to do is have it be a variable range (there can be anything from 1-10 years pasted in) so I set it up to search InStr for "Q1", "Q2" and then insert the rows and proper month titles. I haven't inserted month titles yet, because I want to get the rows inserted first, but if you have a suggestion on how to do that without specifying cell values that'd also be awesome! it's also worth mentioning this data insertion starts on column U and will every time. Thanks for any help or suggestions!

```
Sub InsertMonths()
If cell.value = InStr(1, cell, "Q1", 1) Then
    Dim y As String
    y = InStr(1, cell, "Q1", 1)
    If y = "" Then Exit Sub
    Dim x As Long
    For x = Cells(Columns.Count, 1).End(xlUp).Column To 1 Step -1
    If Cells(x, 18).value = y Then
    Columns(x + 3).Resize(1).Insert
    End If
    Next x
Else cell.value = InStr(1, cell, "Q2", 1) Then
    Dim y As String
    y = InStr(1, cell, "Q2", 1)
    If y = "" Then Exit Sub
    Dim x As Long
    For x = Cells(Columns.Count, 1).End(xlUp).Column To 1 Step -1
    If Cells(x, 18).value = y Then
    Columns(x + 3).Resize(1).Insert
    End If
    Next x
Else InStr(1, cell, "Q3", 1) then
    Dim y As String
    y = InStr(1, cell, "Q3", 1)
    If y = "" Then Exit Sub
    Dim x As Long
    For x = Cells(Columns.Count, 1).End(xlUp).Column To 1 Step -1
    If Cells(x, 18).value = y Then
    Columns(x + 3).Resize(1).Insert
    End If
    Next x
Else InStr(1, cell, "Q4", 1) then
    Dim y As String
    y = InStr(1, cell, "Q4", 1)
    If y = "" Then Exit Sub
    Dim x As Long
    For x = Cells(Columns.Count, 1).End(xlUp).Column To 1 Step -1
    If Cells(x, 18).value = y Then
    Columns(x + 3).Resize(1).Insert
    End If
    Next x
End If
End Sub

```