2016-04-24 11 views
0

私はVBAを学習していますので、MatlabとC++でプログラミングする方法を知っています。 CountAを使用して、特定の行とその行だけに使用されているすべてのセルをカウントする方法が不思議です。 (私は範囲と列に複数の例がありますが、行には何もありません)。将来このVBAを使用したいので範囲を使用できません。この行にはいくつかの変数が変更されます。私はまた、それらのセルの内容(テキスト)をスペースのない別の場所に移動させたいと思っています。なぜなら、現在使用されている各セルの間に3つのスペースがあるからです。CountAを1行にのみ使用し、見つかったセルを使用して他の場所に置く

これまでのところ私は私が別の場所に、各セルからそのデータを取る部分については何もありません

Sub CountNonBlankCells() 
    Dim numcompanies As Integer 
    n = Sheet1.CountA(Rows(1)) 
    Worksheets("start on this page").Range("B2") = n 
End Sub 

非常に最初の行のCOUNTAのためではない、このコードを持っています。

答えて

0

確かに範囲を使用できます。あなたの質問はかなり幅広いですが、チュートリアルの目的のために...ここに行数に空白以外のセルの数をカウントし、それぞれに何があるかを示しますコードの一部... 1として

Sub TestCount() 
Dim mySht As Worksheet 
Dim myRng As Range, oRow As Range 
Dim lstRow As Long, lstCol As Long 
Dim nUsed As Long 
Dim iLoop As Long 

Set mySht = Worksheets("Sheet13") 
lstRow = mySht.Range("A1").End(xlDown).Row 
lstCol = mySht.Range("A1").End(xlToRight).Column 
Set myRng = mySht.Range(Cells(1, 1), Cells(lstRow, lstCol)) 

Debug.Print "Number of Rows is " & myRng.Rows.Count 
For Each oRow In myRng.Rows 
    nUsed = Application.CountA(oRow) 
    For iLoop = 1 To nUsed 
     Debug.Print oRow.Cells(1, iLoop) 
    ' assign oRow.Cells(1,iLoop) to something else here 
    Next iLoop 
Next oRow 

End Sub 
0

ですあなたの質問私はあなたが空のセルを持っていない完全な行を別の場所(行)にコピーすると仮定しているが、空のセルはありません。

これはあなたが望むものだと思います。コード上

Sub CountNonBlankCells() 

    Dim CurrentSh As Worksheet, TargetSh As Worksheet 
    Dim LastColumn As Long, count As Long 
    Dim MyRange As Range 
    Dim i As Long, temp As Long 
    Dim RowNum As Long 

    Set CurrentSh = ThisWorkbook.Worksheets("Sheet1") 
    Set TargetSh = ThisWorkbook.Worksheets("Sheet2") 

    RowNum = ActiveCell.Row 
    LastColumn = CurrentSh.Cells(RowNum, Columns.count).End(xlToLeft).Column 

    Set MyRange = CurrentSh.Rows(RowNum) 
    count = WorksheetFunction.CountA(MyRange) 

    temp = 1 
    For i = 1 To LastColumn 
     If Not IsEmpty(CurrentSh.Cells(RowNum, i)) Then 
      TargetSh.Cells(RowNum, temp).Value = CurrentSh.Cells(RowNum, i).Value 
      temp = temp + 1 
     End If 
    Next i 

End Sub 

ブランク細胞なしで同じ行数でSheet2Sheet1にアクティブな行をコピーします。

関連する問題