2017-05-20 1 views
-1

열 A의 값이 일치 할 때까지 열 B의 값을 합산하려고합니다. 그럴 때, 나는 Column A의 다음 값으로 건너 뛰고 싶습니다 (0,1). 그리고 그 값에 도달 할 때까지 다시 합계합니다. Column A의 값에 도달 할 때마다 모든 셀 A 열에서 값을 얻고 C 열에 넣는다. (어떤 색으로 실내를 강조하면 너무 효과적이다.) 값을 합하면 항상 A의 값과 정확히 일치한다.>Excel (VBA) : 다른 열의 값에 도달 할 때까지 열의 값 합계

아래 테이블의 일부에서 화면을 연결했습니다.

예 : 열 A의 첫 번째 값인 443.33을 오른쪽으로 하나씩 오프셋하고 정확히 443.33이 될 때까지 해당 열의 값 합계를 시작하고 싶습니다. 내가 가지고있을 때 원하는 셀 (이 경우 B2 만)을 만들고 C 열의 인접한 셀 (이 경우 => C2)에 복사해야하는 셀을 가져 오려고합니다. 다음 열 A (66,144.90)에서 다음 값을 찾고 반복합니다.

Excel-Formulas 및 Excel-VBA를 사용하여이 작업을 시도했습니다. 불행히도 성공하지 못했습니다.

감사합니다. 는

Screen from my table

Desired result

답변

0

이 사용자의 요구를 작성해야합니다 감사합니다. 값을 일치 시키려고 시도합니다. 가능한 경우 다음 값으로 계속 진행합니다. 필요한 셀은 색상으로 강조 표시됩니다.

Sub MatchValues() 
Dim IndexA, IndexB, i, j, k As Integer 
Dim ValueA, ValueB As Variant 
Dim lrA, lrB As Long 
Dim sht As Worksheet 

Set sht = Worksheets("Tabelle1") 
lrA = sht.Cells(Rows.Count, 1).End(xlUp).Row 
lrB = sht.Cells(Rows.Count, 2).End(xlUp).Row 


For i = 1 To lrA 
    If sht.Cells(i, 1).Value <> "" Then 
    ValueA = CDec(sht.Cells(i, 1).Value) 
    ValueB = 0 
     For j = i To lrB 
      If IsNumeric(sht.Cells(j, 2).Value) Then 
       ValueB = ValueB + CDec(sht.Cells(j, 2).Value) 
      End If 
      If ValueA = ValueB Then 
       sht.Range(Cells(i, 2), Cells(j, 2)).Interior.ColorIndex = 33 + k 
       sht.Cells(i, 1).Interior.ColorIndex = 33 + k 
       k = k + 1 
       Exit For 
      ElseIf ValueB > ValueA Then 
        MsgBox ("Error for Value in Row: " & i) 
       Exit For 
      End If 
     Next j 
    End If 
Next i 
End Sub 
+0

도움 주셔서 감사합니다. 이 코드는 매우 유망 해 보인다. 런타임 오류 '13': 유형이 일치하지 않습니다. 'ValueB = ValueB + sht.Cells (j, 2) .Value'행에 대해 이 입력되었습니다. 문자열을 변경하려고했지만 여전히 오류가 발생했습니다. – Copiloc

+0

Can 이 버전을 실행하면 숫자 값만 추가됩니다. – UGP

+0

코드가 실행 중이지만 합계가 필요하지 않은 값, 즉 인접 값이 일치하는 값에 대해서만 작동합니다. 그래서 66,144.90은 작동하지 않았습니다. – Copiloc

0

다음은 VBA가 아닌 수식을 사용하는 방법입니다.

두 개의 "작동하는"열을 추가로 사용하게됩니다.

제 1 실시 열 C는 C5에 대한 공식이 열 A의 새로운 값이 있는지 확인한다

=IF(A5<>"",A5,C4) 

인 열 A. 마지막 값 추적 열인 경우 사용 else가 있으면 위의 행에서 A 열의 이전 값을 사용합니다. 두 번째 작업 열 D는 열 B의 누계를 유지

=IF(A5<>"",B5,D4+B5) 

한 다음 원하는 숫자 열 E에있는 컬럼에 값이있을 때마다 다시 시작

=IF(D5<=C5,B5,"") 

Example

관련 문제