元の表がSheet1とします。数式だと拡張性が低い気がするのでマクロで処理します。
この表はデータベース型ではなく、クロス表になっています。1回この表をデータベース型に変換します(ピボット解除)。
そのうえでSheet2にピボットテーブルを作成します。
レポートフィルタに品名を入れるのでB3セルで品名を選択します。
Sub データベース再構築()
Dim i As Long, j As Long, k As Long, c As Long, r As Long, V
Sheets(\u0026quot;Sheet1\u0026quot;).Select
Columns(\u0026quot;A:E\u0026quot;).Clear
r = Cells(Rows.Count, 12).End(xlUp).Row
c = Cells(3, Columns.Count).End(xlToLeft).Column
ReDim V(1 To (c - 13) * (r - 3) + 1, 1 To 4)
V(1, 1) = \u0026quot;店舗\u0026quot;: V(1, 2) = \u0026quot;品名\u0026quot;: V(1, 3) = \u0026quot;年度\u0026quot;: V(1, 4) = \u0026quot;売上\u0026quot;
k = 2
For j = 14 To c
For i = 4 To r
V(k, 1) = Cells(i, 12)
V(k, 2) = Cells(i, 13)
V(k, 3) = Cells(3, j)
V(k, 4) = Cells(i, j)
k = k + 1
Next
Next
With Range(\u0026quot;B3\u0026quot;)
.Resize(UBound(V), 4) = V
.CurrentRegion.Borders.LineStyle = True
End With
End Sub
Sub ピボットテーブル作製()
Sheets(\u0026quot;Sheet2\u0026quot;).Select
With ThisWorkbook.PivotCaches.Create(xlDatabase, Sheets(\u0026quot;Sheet1\u0026quot;).Range(\u0026quot;B3\u0026quot;).CurrentRegion) _
.CreatePivotTable(Range(\u0026quot;B5\u0026quot;))
.PivotFields(\u0026quot;品名\u0026quot;).Orientation = xlPageField
.PivotFields(\u0026quot;年度\u0026quot;).Orientation = xlRowField
.PivotFields(\u0026quot;店舗\u0026quot;).Orientation = xlColumnField
.PivotFields(\u0026quot;売上\u0026quot;).Orientation = xlDataField
End With
End Sub