2016-11-11 58 views
0

我有一段代码从一张随机数的表格(从第7张表格开始)复制一些信息。如下复制信息,然后计数不是NULL,Excel VBA

Sub Controle() 

Dim sh As Worksheet, N As Long 
Dim i As Long, M As Long 
N = Sheets.Count 
M = 1 
For i = 7 To N 
    Sheets(i).Range("E2").Copy 
    Sheets("Controle tabel").Cells(1, M).PasteSpecial (xlValues) 
    Sheets("Controle tabel").Cells(1, M).PasteSpecial (xlFormats) 
    M = M + 1 
Next i 
End Sub 

我也想指望在A列中值的数量,我想添加这个

Sheets(i).Range("A:A").Cells.SpecialCells(xlCellTypeConstants).Count 

,但它不会跑,我想我需要怎么加在哪里粘贴它,因为它必须在使用代码粘贴的名字下,但我不知道如何做到这一点。我添加了一个新的变量L做一个列表一样的M

Sheets(i).Range("A:A").Cells(1, L).SpecialCells(xlCellTypeConstants).Count 

但它仍然不会跑,我想我可能是使用了错误的方法来计算非空(自从你也有COUNTA,但我们不知道该表的名称,这是很难我认为)

所以它也有循环的第7之后的所有表和统计在列A

+0

你是什么意思 “将无法运行” 是什么意思?如果您收到错误消息,它是什么?你的第一个配方对我来说看起来不错,你的第二个配方只检查一个单元(假设L有一个正值)。 – SJR

+0

它给我的方法不支持此对象 – Ramkoe

+0

您是否已将该值分配给单元格,例如, 'Sheets(“Controle tabel”)。Cells(1,1)= Sheets(i).Range(“A:A”).Cells.SpecialCells(xlCellTypeConstants).Count'?就其本身而言,它不会工作,因为它没有做任何事情。 – SJR

回答

0

猜测一点点的不空单元格,但这个?

Sub Controle() 

Dim sh As Worksheet, N As Long 
Dim i As Long, M As Long, L As Long 
N = Sheets.Count 
M = 1 
For i = 7 To N 
    Sheets(i).Range("E2").Copy 
    Sheets("Controle tabel").Cells(1, M).PasteSpecial (xlValues) 
    Sheets("Controle tabel").Cells(1, M).PasteSpecial (xlFormats) 
    Sheets("Controle tabel").Cells(1, M + 1) = Sheets(i).Range("A:A").SpecialCells(xlCellTypeConstants).Count 
    M = M + 2 
Next i 

End Sub 
+0

ahhh是的,谢谢@SJR – Ramkoe

+0

我确实把它粘贴在一起,这很方便我想'Dim SH作为工作表,N只要 昏暗我只要中,M只要 N = Sheets.Count M = 2 对于i = 7到N 表(I).Range( “E2”)。复印 表( (“Controle tabel”)。范围(“A”&M).PasteSpecial(xlValues) 表(“Controle tabel”)。范围(“A”&M).PasteSpecial(xlFormats) 表(“Controle tabel”)。 Range(“B”&M)= Sheets(i).Range(“A:A”)。SpecialCells(xlCellTypeConstants).Count M = M + 1 Next i End Sub' – Ramkoe

+0

如果您想要在另一个图下面,请将“Cells(1,M + 1)”替换为“Cells(2,M)”,并将M增量更改回1。 – SJR

0

试试这一次 -

Dim sh As Worksheet, N, i, m, lastrow, nullcount As Long 
N = Sheets.Count 

For i = 7 To N 

lastrow = Sheets("Controle tabel").Range("A500000").End(xlUp).Row + 1 
Sheets("Controle tabel").Range("A" & lastrow).Value = Sheets(i).Range("E2").Value 

Next i 
On Error Resume Next 

nullcount = Application.WorksheetFunction.CountIf(Sheets("Controle tabel").Range("A:A"), "NULL") 

Sheets("Controle tabel").Range("A" & lastrow).Value = nullcount 
相关问题