2015-07-31 5 views
-1

Мне нужно создать скрипт vba, который берет данные из столбца другой таблицы в Excel ("Days Of Last Update", который является десятичным), а затем создает сумму, если день выше 2 (показывая результат в новом столбце). Это кажется очень простым, но я новичок и понятия не имею, как действовать дальше.Сумма на скрипте vba из другой таблицы


UPDATE:

Привет всем, спасибо за помощь. Теперь у меня есть новая проблема, все еще в этом проекте. Вот что я сделал:

  • листа В RAWDATA имеет столбец с именем "Days Since Last Update", который говорит мне, когда запрос на обслуживание продукта обновляется. Итак, я создал новый столбец с формулой =IF(N:N>2,1,0), чтобы сообщить мне, были ли Дни с последнего обновления выше 2. Я обновил сводную таблицу, чтобы получить этот новый столбец, сделал сумму данных и получил то, что ранее но, когда функция обновления рабочего листа запускается, новый столбец сводной таблицы, а также столбец RawData с формулой исчезнут. В коде (это не сделано мной) функции Update, там было что-то вроде этого:..

    Worksheets ("Сводная таблица") PivotTables ("PivotTable1") PivotCache.Refresh

    Это имеет какое-то отношение к моей проблеме?

+1

Можете ли вы добавить информацию о своем вопросе, например, как организованы ваши данные. Что вы считаете? Если бы вы могли разместить как простые образцы данных, так и ожидаемый результат, это было бы потрясающе. Прямо сейчас, я не могу дать вам даже намека на то, как действовать из-за минимальной информации. – L42

ответ

0
  1. Пожалуйста найти образец листа данных прилагается ниже. count on macro from another table

  2. Код VBA прилагается ниже.

    Sub Extract_Values() 
    
         Dim wks As Worksheet 
         Dim startRow As Integer 
         Dim lastRow As Integer 
         Dim vArray As Variant 
         Dim vNewArray As Variant 
         Dim i As Integer, j As Integer 
         Dim Counter1 As Integer, Counter2 As Integer 
    
         startRow = 2 
         Set wks = Sheets("Sheet1") 
    
         With wks 
         lastRow = .Cells(Rows.Count, 1).End(xlUp).Row 
         vArray = .Range("A" & startRow & ":D" & lastRow).Value2 
         For i = 1 To UBound(vArray) 
          If vArray(i, 4) = "Y" Then 
          Counter1 = Counter1 + 1 
         End If 
         Next i 
         ReDim vNewArray(1 To Counter1, 1 To 2) 
         For j = 1 To UBound(vArray) 
         If vArray(j, 4) = "Y" Then 
        Counter2 = Counter2 + 1 
        vNewArray(Counter2, 1) = vArray(j, 1) 
        vNewArray(Counter2, 2) = vArray(j, 2) 
        End If 
        Next 
        End With 
    
        Range("E" & startRow & ":F" & startRow + Counter1 - 1) = vNewArray 
        Range("E" & startRow & ":E" & startRow + Counter1 - 1).Select 
        Selection.NumberFormat = "m/d/yyyy" 
        Range("F" & startRow + Counter1).Select 
        End Sub 
    
  3. Я тоже начинающий выставлению правильного кода VBA в ячейке F8, которые я вычислил Excel встроенного графа функции.

  4. Колонка D Содержит ЕСЛИ формула, как 'D2 = IF (В2> 1, "Y", "N")' НТН

0

Попытка

Dim RowCount As Integer 
Dim NewRow As Integer 

RowCount = 2 
NewRow = 2 

Do Until RowCount > Cells(2, 2).End(xlDown).Row 
    If Cells(RowCount, 2) > 1 Then 
     Range(Cells(NewRow, 5), Cells(NewRow, 6)).Value = Range(Cells(RowCount, 1), Cells(RowCount, 2)).Value 
     NewRow = NewRow + 1 
    End If 

    RowCount = RowCount + 1 
Loop 

End Sub

Смежные вопросы