2014-04-24 2 views
2

이 사이트에서 초보자가되어 처음 도움을 주신 데 대해 진심으로 감사드립니다.조건이있는 열에 값 추가

WK 1 WK 2 WK 3 WK 4 WK 5 TOTAL HOURS TOTAL OF FIRST 3 WEEKS <> 0 

요 10 0 5 6 5 26 21

스미스 4 1 10 3 4 22 15

베드로 0 4 4 4 2 14 12

수잔 5 5 0 5 8 23 내 테이블에서 15

SO23257561 example

나는 번째 첫 번째 세 개의 열을 추가 할 에서 0을 포함하지 않습니다. 처음 세 개에 0이 있으면 다음 열을 확인하고 다시 추가하여 세 개의 열을 모두 0으로 만듭니다. Col H TOTAL OF FIRST 3 WEEKS <>0 (수동으로해야하는 곳)과 같은 일부 기능.

VB 코드 집합이나 수식이나 매크로가있는 예제를 배울 수 있다면 정말 고마워요. Excel 2007을 사용하고 있습니다.

답변

1

이 알리 M가 참조하는 복잡한 공식이다. 세 개 미만의 비 0 값이있는 경우 작동

=IF(COUNTIF(A2:F2,"<>0")=0,0,SUM(A2:INDEX(A2:F2,SMALL(IF(A2:F2<>0,COLUMN(A2:F2),""),MIN(3,COUNTIF(A2:F2,"<>0")))))) 

하는 것으로 -변화 - 를 입력 그것은 Ctrl 키를로 입력 array formula입니다.

+0

도움을 주신 모든 분들께 감사드립니다. 죄송합니다. 답장을 보내지 못해 죄송합니다. – user3566678

1

수식을 사용할 수는 있지만 복잡 할 수 있습니다. 대신에 원하는대로 정확하게 작동하는이 서브 루틴을 사용할 수 있습니다!

Public Sub y() 
    Dim i, sum, c As Integer 

    Dim Rng, Row, cell As Range 


    Set Rng = Range("B2:F5") 

    i = 0 

    For Each Row In Rng.Rows 
     For Each cell In Row.Cells 
      If (cell.Value <> 0 And i < 3) Then 
       sum = sum + cell.Value 
       i = i + 1 
      End If 
     Next cell 
     Cells(Row.Row, 7).Value = sum 
     sum = 0 
     i = 0 
    Next Row 

End Sub 

그것은 항상 열 H.의 합계를 넣어이 줄을 변경하여 변경할 수 있습니다

Cells(Row.Row, 7).Value = sum 
+0

+1하지만 몇 가지 변수를 변형으로 선언하고 있습니다. 이 [Chip Pearson 페이지] (http://www.cpearson.com/excel/DeclaringVariables.aspx)를보고 "하나의 Dim 문으로 선언 된 변수에주의를 기울이십시오." –

+0

VB에서 코드를 작성하면 훨씬 쉽게 이해하기 - 줄을 서서 이해하십시오 – user3566678