2017-12-26 4 views
0

サンプルデータとの間の狭い範囲:和二つの特別なマーク

Column A  Column B 

63843  
60208   
57606 
130717   1  
190407 
186980   1  
167839 
180043 
174384   1 
170289   1 
107142 
87628  
41637 
48807   1  
57602 
51537 

列Aは、濃度および列Bであり、マークのようなものです。

1つのマークの次のマークまでの濃度を新しいカラム(カラムC)に合計したい場合、「1」以外の濃度が1つの合計の最後のエレメントです。 たとえば、sum(63843:130717)、sum(190407:186980)、sum(167839:174384)などがあります。

マークがお互いに固執している場合は、170289と174384の間のように、合計が、私ははっきりとそれを表現願っています170289.

です。私はこの部分にいくつかのコードを書く必要があることを知っていますが、私は全く分かりません。

範囲( "C1:C" &ラストロー).Formula = "= IF(B1 = 1、TEXT(SUM(...........)、 "" ................... "") "" "") "

ありがとうございました。

+1

したい場合、これは簡単な式で行うことができます。 –

答えて

1
Dim Lastrow As Long 
With ActiveSheet 
    Lastrow = .Cells(.Rows.Count, 1).End(xlUp).Row 
    .Range("C1").Formula = "=IF(B1=1,A1,"""")" 
    .Range("C2:C" & Lastrow).Formula = "=IF(B2=1,SUM($A$1:A2)-SUM($C$1:C1),"""")" 
End With 

enter image description here

+0

素晴らしい!私はVBAの初心者です、それは私に長い時間を要しました。どうもありがとうございます。 –

1

VBAソリューション:

EDIT:それはあなたのものと一致しないので、私は私の例では1が欠落していましたが、あなたは、私が思う要点を取得実現。

Option Explicit 
Sub SumBetweenMarks() 
Dim sht As Worksheet, lastrow As Long, myvalue As Long, i as long 

Set sht = ActiveSheet 
lastrow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row 

myvalue = 0 
For i = 1 To lastrow 
    If Range("B" & i).Value <> 1 Then 
     myvalue = myvalue + Range("A" & i).Value 
    Else 
     myvalue = myvalue + Range("A" & i).Value 
     Range("C" & i).Value = myvalue 
     myvalue = 0 
    End If 
Next i 
End Sub 

enter image description here

+0

ありがとうございました!私は質問があります。なぜ私は "myvalue = myvalue + Range(" A "&i).Value"エラー13:タイプの不一致でしたか? –

+0

@PhoenixNingつまり、列Aのそのセルにあるものは実際には数字ではなく、それは '124124A'なのでしょうか? – dwirony