2016-04-24 54 views
0

所以我正在學習VBA,我知道如何在Matlab和一些C++上編程。我想知道如何使用CountA來統計特定行和只有那一行上使用的所有單元格。 (我在範圍和列上有多個示例,但只有一行上沒有)。我無法使用範圍,因爲我將來要使用此VBA,並且此行將有多個變量更改。我還希望將這些單元格的內容(文本)移動到另一個位置,因爲它們之間沒有空格,因爲現在它們在每個使用的單元格之間有三個空格。僅在一行上使用CountA,並使用找到的單元格並將它們放在其他地方

到目前爲止,我有這個代碼是沒有多大的第一行

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

的COUNTA我什麼都沒有的部分,我需要從每個小區到另一個位置的數據。

回答

0

當然你可以使用Range。你的問題是相當廣泛的,但對於教程的目的......這裏的一段代碼,在計算行數的非空單元格的數量,並顯示你什麼是他們每個人的...

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 

上面的代碼將在Sheet1在同一行號碼複製活動行至Sheet2沒有空白單元格。

相關問題