2017-05-07 16 views
1

B2:BV2が入力されている場合のみA1:AV1の内容をコピーします。空白のセルにタブやスペースを貼り付けることなく空白をコピーしたい。ステップ2として、私はB2:BV2をC行にコピーして空白セルを削除する必要があります。ステップ3私は行Cからこれらのエントリを取る必要があるので、4つのエントリだけが次の行Dを最後まで(10行以下)移入するようにする必要があります。 私は部分的なペーストだけで次のことを思いついた(私ができる最高)。行2にデータが入力されている場合にのみvbaを使用して行2を入力してください

Sub Copy() 

    If IsEmpty(Range("A2").Value) = False Then 
     ActiveSheet.Range("A1").Copy Range("A3") 
    End If 
    If IsEmpty(Range("B2").Value) = False Then 
     ActiveSheet.Range("B1").Copy Range("B3") 
    End If 
    If IsEmpty(Range("C2").Value) = False Then 
     ActiveSheet.Range("C1").Copy Range("C3") 
    End If 
    If IsEmpty(Range("D2").Value) = False Then 
     ActiveSheet.Range("D1").Copy Range("D3") 
    End If 
    If IsEmpty(Range("E2").Value) = False Then 
     ActiveSheet.Range("E1").Copy Range("E3") 
    End If 
    Sheet1.Range("a3:Y3").SpecialCells(xlCellTypeConstants).Copy ActiveSheet.Range("A4") 

End Sub 

これは、AOが正常に機能しなくなった後に機能し、正しいセルをコピーしませんでした。私はこれが行われるべきであることがわかっている配列の型が来ているが、私はループを把握できませんでした。

答えて

1

まず、セルのチェックとコピーのためのループを作成します。これには、必要なすべての条件が含まれています: PS。私が書いたコードだけではなく、コード内のロジックを意味します。

For I = 1 To Sheet1.Columns.Count 
     If Sheet1.Cells(1, I).Value <> "" and not IsNull(Sheet1.Cells(1, I).Value) Then 
      I2=I2+1 
      Sheet1.Cells(2, I2).Value=Sheet1.Cells(1, I).Value 
     End if 

     If Sheet1.Cells(2, I2).Value <> "" and not IsNull(Sheet1.Cells(2, I2).Value) Then 
      I3=I3+1 
      Sheet1.Cells(3, I3).Value=Sheet1.Cells(1, I2-1).Value 
     End if 

この点以降、私はあなたが前進できると思います。それ以外の場合はあなたが直面するものを書く

関連する問題