Подсчет строк по разной дате - PullRequest
0 голосов
/ 10 октября 2009

У меня есть столбец дат и столбец элементов.

Привет всем Я хочу посчитать количество предметов на определенную дату, сколько их в день. Колонка 1 Дата - Колонка 2 - Предметы

01.09.2009  IT004  
01.09.2009  IT004
01.09.2009  IT005
01.09.2009  IT006
01.09.2009  IT006
01.09.2009  IT006
06.09.2009  IT004
06.09.2009  IT004
06.09.2009  IT005
07.09.2009  IT004
07.09.2009  IT005
07.09.2009  IT005
07.09.2009  IT006

              01.09.2009   06.09.2009   07.09.2009
For It004         2            2             1
For It005         1            1             2
For It006         3            0             1

Любая помощь будет принята с благодарностью и большое спасибо заранее.

Атанас

Ответы [ 3 ]

1 голос
/ 10 октября 2009

Если это все, что есть в таблице, это должно работать:

SELECT datecol, count(*) FROM table GROUP BY datecol
0 голосов
/ 20 октября 2009

Как насчет использования функции Excel DCOUNTA? Иметь две таблицы, где верхняя таблица является критерием для функции DSUM.

EX)

Date         Items
01.09.2009   IT004

Date         Items
01.09.2009   IT004
01.09.2009   IT004
01.09.2009   IT005

Таким образом, в строке под нижней таблицей вы бы поместили функцию DCOUNTA:

=DCOUNTA(A3:B6,"items",A1:B2)

Всегда сначала ищите встроенные функции:)

0 голосов
/ 11 октября 2009

Для этого вы можете использовать сводную таблицу.

Использовать элементы в качестве поля строк.

Использовать дату в качестве столбца и поля данных (количество дат).

Использование VBA

Если предположить, что элементы и дата находятся на листе «Лист1», начиная с ячейки A1, то сводная таблица создается на листе «Лист2», начиная с ячейки A3 в активной книге.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...