2017-08-15 21 views
0

マクロVBAはかなり新しいです。ある人が私を以下のように導くことができれば非常に役に立ちます。同じカテゴリに対応するセルに値を追加するマクロ

私は、列Aと列Bにカテゴリ名が対応する値を持つデータセットを持っています。 It looks somewhat like this

列Aのカテゴリ名に基づいて、セルA1:A3がカテゴリ「a」に属し、B1:B3に存在する値を合計し、私は、次のよう

Sub main() 
Dim i As Long 
Dim a As Long ' 

Dim sum As Long 
sum = 0 
Dim samerows As Boolean 
samerows = True 
For i = 1 To Range("A" & Rows.Count).End(xlUp).Row 

    If StrComp(Cells(i, 1), Cells(i + 1, 1), vbTextCompare) Then 
     samerows = False 
    End If 

    If samerows Then 
     sum = sum + Cells(i, 1).Value 
     Range(Cells(i, 2), Cells(i + 1, 2)).Merge 
    End If 

    samerows = True 
    Cells(i, 2).Value = sum 
Next i 

End Sub 

で使用してコードを試みた。しかし、私はできないのです、このコードが間違っている、対応する行が列Cにマージする必要があり、結果として生じる合計は、列C Output should look like this

に表示されます適切なセル参照値を提供する。

それはいくつかのいずれかが自分の考えを共有し、コードできるだけコードとして、あなたのスタイルに近く維持しようとして

答えて

0

で私を導くことができれば、私は細胞の数のカウントを追加し、大きな助けになるであろう(これは、Excelが値を格納する場所であるため)マージされたセルの任意のフィールドの左上のセルを参照し、さらにいくつかの集計インスタンスを追加するために必要です。以下をお試しください:

Sub main() 
Dim i As Long 
Dim a As Long ' 

Dim sum As Long 
Dim mergeCnt As Long 
mergeCnt = 0 
sum = 0 
Dim samerows As Boolean 
samerows = True 
For i = 1 To Range("A" & Rows.Count).End(xlUp).Row 

    If StrComp(Cells(i, 1), Cells(i + 1, 1), vbTextCompare) Then 
     sum = sum + Cells(i, 2).Value 
     samerows = False 
    End If 
    Debug.Print (sum) 
    If samerows Then 
     sum = sum + Cells(i, 2).Value 
     Range(Cells(i, 3), Cells(i + 1, 3)).Merge 
     mergeCnt = mergeCnt + 1 
    Else: 
     Cells(i - mergeCnt, 3).Value = sum 
     sum = 0 
     mergeCnt = 0 
    End If 

    samerows = True 
    Cells(i, 3).Value = sum 
Next i 

End Sub 
+0

ありがとうございます。出来た 。 @prebsus – sri

関連する問題