Вы можете использовать сводную таблицу, чтобы сделать это.
Использование элементов в качестве поля строки.
Использовать дату как столбец и поле данных (граф даты).
Использование VBA
Предполагая, что товары и дата находятся в рабочем листе «Лист1», начиная с ячейки A1, сводная таблица создается на листе «Лист2», начиная с ячейки А3 в активной книге.
Sub createPivotTableReport()
Set wsData = ActiveWorkbook.Worksheets("Sheet1")
Set wsReport = ActiveWorkbook.Worksheets("Sheet2")
Set rngData = wsData.UsedRange
Set rngReport = wsReport.Range("a3")
Set pvtCache = ActiveWorkbook.PivotCaches.Add(xlDatabase, rngData.Address(True, True, 1, True))
Set pvtTable = pvtCache.CreatePivotTable(rngReport)
pvtFieldsRow = Array("Items")
pvtFieldsCol = Array("Date")
pvtTable.AddFields pvtFieldsRow, pvtFieldsCol
pvtTable.PivotFields("Date").Orientation = xlDataField
End Sub
Примечание:
В некоторых (новые?) Версиях Excel, линия
Set pvtCache = ActiveWorkbook.PivotCaches.Add(xlDatabase, rngData.Address(True, True, 1, True))
может быть изменен на
Set pvtCache = ActiveWorkbook.PivotCaches.Add(xlDatabase, rngData)
Или, может быть, моя старая версия из Excel просто плохо. Я не знаю.
Я также разместил .vbs решение здесь:
http://gallery.technet.microsoft.com/ScriptCenter/en-us/dde1e5e2-f5f6-4053-84fb-b820f01f1fdf