2017-03-06 4 views
0

したがって、必要に応じて143〜179のセルにデータを入力できる列Aがあります。ループはAからデータを取り出し、空白をすべて取り除いて空白を取り除き(書式設定に必要なものを除いて)、それらをC列に配置します。Visual Basic Excel - カウンタに基づいてセルをコピーしようとしています

したがって、問題はスクリプト大量のスペースがあるので、私たちのシステムにコピーされたときに奇妙に見えるセルが4つしかなくても、143から179にコピーされます。どのようにそれを持っているので、単にC143: "C" &カウンターに記入されているものをコピー/選択する方法はありますか?

For i = 143 To 179 
    If i = 163 Or i = 165 Or i = 174 Then counter = counter + 1 
     If Cells(i, 1).Value <> "" Then 
      Cells(counter + 143, 3).Value = Cells(i, 1).Value 
      counter = counter + 1 
     End If 
Next i  

Range("C143:C179").Select 
Selection.Copy 
+1

'Range( "C143:C"&counter).Copy'? – BruceWayne

答えて

1

あなたの質問は少しは不明ですが、あなただけの列Aの値を持つセルをコピーしたい場合は、列cに、このジョブを行うことができ、セルC1から始まります。なぜ行の一部をスキップしたいのか分かりませんが、本当に必要な場合はコードに戻すことができます。

Sub test() 
    Dim i As Integer 
    Dim WS As Worksheet 

    Set WS = ActiveSheet 
    counter = 1 

    For i = 143 To 179 
     'If i = 163 Or i = 165 Or i = 174 Then counter = counter + 1 
      If WS.Cells(i, 1).Value <> "" Then 
       WS.Cells(counter, 3).Value = WS.Cells(i, 1).Value 
       counter = counter + 1 
      End If 
    Next i 

    WS.Range("C1:C" & counter - 1).Select 
    Selection.Copy 
End Sub 
+0

素晴らしいおかげさまです。その管理者のチェックのために、純粋に審美的なチェックの異なるタイプ間の間隔を保つように。私が知っているすべての非常に興味深い。 –

+0

@ J.Maccあなたはフォーラムに初めて参加した時から、あなたが答えを得たときにあなたが望むものを受け取ったことを意味する緑色に変わる答えの横にチェックマークがあり、実際には答えを書いた人;) – Ibo

0

値を変数として設定します。このような何か:

For i = 143 To 179 
    If i = 163 Or i = 165 Or i = 174 Then counter = counter + 1 
     If Cells(i, 1).Value <> "" Then 
      Cells(counter + 143, 3).Value = Cells(i, 1).Value 
      counter = counter + 1 
     End If 
Next i  

lastrow1 = Cells(Rows.Count, "A").End(xlUp).Row 

Range("C143:C" & lastrow1).Select 
Selection.Copy 
+1

私は非常に恥ずかしいです、私はこれをあなたに親切に感謝したとは思わなかった。 –

+0

問題ありません!この答えがあなたのために働いた場合、左のチェックマークをクリックして回答を受け入れることができれば大いに感謝します:) –

関連する問題