2016-09-01 4 views
2

Excel을 처음 사용합니다. VBA Excel에서 Sum-product를 평가해야합니다. 여기 VBA Excel에서 평가할 펌프 제품

내 워크 시트의 :.
  • 셀 D6 새로운 입력 한 날짜를 포함 D4는 특정 날짜를 포함 enter image description here

    • 셀 (강조 노란색)

      (강조 레드)

    • 열이 C 전설을 포함 (강조 표시된 핑크)
    • 열 J 월이 들어 있습니다. (녹색 강조 표시)
    • 열 K 해당 특정 트랜잭션의 범례가 들어 있습니다.

      : (강조 오렌지)
    • 열 나는 합계 할 값 (강조 블루)
    • 열 D9는 이후

    는 내가 뭘하려고하는 것은 즉 합계 제품의 결과 (강조 회색)를 보여줍니다 포함되어 있습니다

    셀 D6에 날짜를 입력하면 열 J를 셀 D6과 일치하는 달을 사용하여 합계해야하며 일치하는 경우 열 C의 범례와 열 K의 범례를 일치시키고 다시 일치하면 열 I을 합계하고 열 D9의 값을 표시합니다.

    이것은 내가 사용하는 공식이며 VBA없이 작동합니다.

    SUMPRODUCT((MONTH($J$9:$J$12000)=MONTH($D$6))*($K$9:$K$12000=C10)*($I$9:$I$12000)) 
    

    While Loop를 사용하는 것이 목적입니다. 특정 달 동안 D6에 날짜를 입력하면 Month가 증가 또는 감소하고 다른 지정된 날짜 셀 D4 (강조 표시된 노란색)까지 추가됩니다.

    하지만 위 공식을 사용하면 #Value를 반환합니다.

    Sub Sub1() 
    Dim a, b, c As Integer 
    a = Sheet20.Cells(6, 4) 
    b = 4 
    c = 10 
    Do While a >= Cells(4, 4) 
    Sheet20.Cells(c, b).Value = Evaluate(" (SumProduct((Month(Sheet20.Range(J9:J12000)) = Month(Cells(6, 4))) * (Sheet20.Range(K9:K12000) = Cells(c, 3)) * (Sheet20.Range(I9:I12000)))") 
    a = a - 1 
    Loop 
    End Sub 
    

    위의 값이 올바르게 적용됩니까?

  • 답변

    0

    사용중인 워크 시트에 대한 적절한 참조를 추가했습니다. VBA에서는 먼저 "Sheet20"이 워크 시트임을 지정해야합니다.

    따라서 "Sheet20"을 Worksheets("Worksheet20")으로 대체하여 워크 시트 컬렉션의 일부임을 분명히했습니다.

    Sub Sub1() 
    Dim a, b, c As Integer 
    a = Worksheets("Sheet20").Cells(6, 4) 
    b = 4 
    c = 10 
    Do While a >= Cells(4, 4) 
    Worksheets("Sheet20").Cells(c, b).Value = Evaluate(" (SumProduct((Month(Sheet20.Range(J9:J12000)) = Month(Cells(6, 4))) * (Sheet20.Range(K9:K12000) = Cells(c, 3)) * (Sheet20.Range(I9:I12000)))") 
    a = a - 1 
    Loop 
    End Sub