2017-11-01 8 views
0

私はエンドユーザーが必要な項目を確認できるようにするプロジェクトに取り組んでいます。チェックされたアイテムはアイテムの横のリストに追加する必要があります。私が問題を抱えているのは、項目がチェックされていない行をスキップせずに、行に情報を追加する方法を習得する方法がわからないということです。これは説明するのが難しいですが、添付された画像は正確に何を意味するのかを示しています。リストの終わりには価格の合計が必要です。この合計はデータの最後の行の後に常に表示する必要がありますので、データの行数に応じて移動できるはずです。これは私の問題です。誰かが私を助けてくれることを願っています。これを行うにはセルの値をリストに追加し、空のセルがないセルには説明が難しい。 (説明の画像を参照)

Sub MakeList() 
Dim i As Long 

    For i = 1 To Rows.Count 
     If Cells(i, 4) = True Then 
      Cells(i, 6) = Cells(i, 1) 
      Cells(i, 7) = Cells(i, 2) 
      Cells(i, 8) = Cells(i, 3) 
     End If 
    Next i 

    For i = 1 To Rows.Count 
     If Cells(i, 4) = True Then 
      Sum = Sum + Cells(i, 3) 
     End If 
    Next i 

    Cells(24, 4) = Sum 

End Sub 

enter image description here

答えて

0

一つの方法は、単にオフセット値にセルが含まれていないすべての時間を追加することです。これは、IfステートメントのElse部分の単純なカウンターに過ぎません。

Sub MakeList() 

Dim i As Long 

Dim Sum As Double 
Sum = 0 

Dim n As Long 
n = 0 

For i = 1 To Rows.Count 
    If Cells(i, 4) = True Then 
     Cells(1 + i - n, 6) = Cells(i, 1) 
     Cells(1 + i - n, 7) = Cells(i, 2) 
     Cells(1 + i - n, 8) = Cells(i, 3) 

     Sum = Sum + Cells(i, 3) 
    Else 
     n = n + 1 
    End If 

Next i 

    'Place sum at the bottom of the original table 
    'Cells(24, 4) = Sum 

    'Place sum at the bottom of the output table 
    Cells(i + 1 - n, 8) = Sum 

End Sub 

これは、アイテムが含まれないたびに出力がその行によってオフセットされる必要があることをコードに伝えます。私はまた、ループを2回繰り返すことを避けるために、元のループの内部で合計を移動しました。これがあなたのために働くかどうか私に教えてください。

+0

完璧に動作しました。ありがとうございました! 私はまだリストの末尾に合計を追加する必要がありますか? – Sidvi

+0

それをコピーして、その文のその文を見ただけです。編集済みの回答を参照してください。 'n'と' i'の両方の値がまだ格納されているという事実を利用しています。 –

+0

小さな変化で動作します!ありがとうございました! セル(i + 1-n + 1,8)でなければ、最後の行に入力します。 – Sidvi

関連する問題