Since there seems to be macros used, and since I think that pivot tables are more flexible, I made the data more pivot table friendly by building an intermediate list for the PT to use
Capture.JPG
Option Explicit
Sub BuildList()
Dim wsList As Worksheet, wsData As Worksheet
Dim rPromos As Range, rPromo As Range
Dim o As Long
Set wsData = Worksheets("Data")
Set wsList = Worksheets("List")
Set rPromos = wsData.Range("D:H").SpecialCells(xlCellTypeConstants, xlTextValues)
wsList.Range("A:B").ClearContents
o = 1
wsList.Cells(o, 1).Value = "Date"
wsList.Cells(o, 2).Value = "Promo"
o = o + 1
For Each rPromo In rPromos.Cells
If rPromo.Row > 2 Then
wsList.Cells(o, 1).Value = rPromo.EntireRow.Cells(1).Value
wsList.Cells(o, 2).Value = rPromo.Value
o = o + 1
End If
Next
wsList.Cells(1, 1).CurrentRegion.Name = "ListData"
wsList.PivotTables(1).PivotCache.Refresh
End Sub