Получение итоговой суммы с другого листа на основе текущей даты - PullRequest
2 голосов
/ 17 марта 2011

Я пытаюсь разработать макрос в Excel 2010, который может извлекать данные из листа 2 на основе даты запуска макроса и предоставлять в общей сложности различные состояния чертежей на листе 1 на основе состояний чертежей, указанных в листе.2. Например, если я запускаю макрос 18.03.2011, строка строки 1 (18.03.2011) должна содержать итоги ColB = 4, ColC = 0, ColD = 2, ColE = 1, ColF= 3. Таким образом, каждый день, когда я запускаю макрос, лист 1 будет обновляться на основе текущей даты и обновленных данных из листа 2 в том же файле.Может кто-нибудь дать мне подсказку о том, как запустить этот код?

Данные листа 1 выглядят следующим образом:

  A         B         C       D          E          F    
 Date  Preliminary  Review  Design  Construction  Final

Столбец Дата содержит следующие строки:

3/ 18/2011
3/20/2011
3/21/2011
3/22/2011

и т. Д. До конца месяца

Лист 2данные выглядят следующим образом:

Col L имеет номера чертежа, а Col M - статус чертежа.Ниже номер чертежа со статусом на листе 2

    L             M

**Drawing       Status**

DWGT2010001     Design

DWGT2010002     Preliminary

DWGT2010003     Final

DWGT2010004     Preliminary

DWGT2010005     Design

DWGT2010006     Construction

DWGT2010007     Final

DWGT2010008     Preliminary

DWGT2010009     Preliminary

DWGT2010010     Final

Ответы [ 2 ]

1 голос
/ 17 марта 2011

Это будет работать, хотя вы можете изменить его в зависимости от вашего конкретного макета.

Private Sub CommandButton1_Click()

Dim WorkingRow As Range
Dim StatusColumn As Integer
Dim i As Integer
Dim ColumnNames(1 To 5) As String

Set WorkingRow = Sheets("Sheet1").UsedRange.Find(Date, LookIn:=xlValues, _  
                   SearchOrder:=xlByRows).Rows(1)
StatusColumn = 13 ' Column M on Sheet 2
ColumnNames(1) = "Preliminary"
ColumnNames(2) = "Review"
ColumnNames(3) = "Design"
ColumnNames(4) = "Construction"
ColumnNames(5) = "Final"

For i = 1 To 5
  WorkingRow.Cells(1, i + 1).Value = _  
    Application.CountIf(Sheets("Sheet2").Columns(StatusColumn), ColumnNames(i))
Next i

End Sub
0 голосов
/ 17 марта 2011

Я не уверен, что хорошо понял, что вы хотели сделать ...

Для начала вы можете попытаться записать макрос, делая то, что вы хотите, и адаптировать код: http://office.microsoft.com/en-us/excel-help/create-a-macro-HP005204711.aspx

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