Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不同列中的VBA检查范围_Vba_Loops_Excel - Fatal编程技术网

不同列中的VBA检查范围

不同列中的VBA检查范围,vba,loops,excel,Vba,Loops,Excel,我有一个xls文件,其中包含多张图纸和多列数据(以6列为一块)。我必须把这些数据复制到最后一张纸上,每一张都在最后一张下面 换句话说,它现在看起来是这样的: a、b、c、d a、b、c、d a、b、c、d 我希望它在最后一页中是这样的: a a a b b b c c c d d d 我设法创建了一个宏,该宏从每个工作表中复制前6列,但我无法在每个工作表中的列之间进行循环: Sub kopiuj_wszystko() Dim kolumna As Integer For Each oWBK I

我有一个xls文件,其中包含多张图纸和多列数据(以6列为一块)。我必须把这些数据复制到最后一张纸上,每一张都在最后一张下面

换句话说,它现在看起来是这样的:

a、b、c、d

a、b、c、d

a、b、c、d

我希望它在最后一页中是这样的:

a

a

a

b

b

b

c

c

c

d

d

d

我设法创建了一个宏,该宏从每个工作表中复制前6列,但我无法在每个工作表中的列之间进行循环:

Sub kopiuj_wszystko()

Dim kolumna As Integer
For Each oWBK In ThisWorkbook.Worksheets
For j = 1 To 1000
If oWBK.Name <> "podsumowanie" Then
' Kopiuj

oWBK.Select

x = Range(j & "1000").End(xlUp).Row 'sprawdź ilość wypełnionych wierszy
y = 6 'ogranicz do kolumny F
oWBK.Cells(x, y).Select
Z = ActiveCell.Address
Range("A9", Z).Select
'Application.CutCopyMode = False
Selection.Copy

'Wklej
Sheets("podsumowanie").Select
E = Range("c10000").End(xlUp).Row
R = 3
Sheets("podsumowanie").Cells(E, R).Select

ActiveSheet.Paste

'Kopiuj kategorię
oWBK.Select
T = Range("A1").Value
Application.CutCopyMode = False
Selection.Copy

'Wklej kategorię
w = 1
Sheets("podsumowanie").Select
Sheets("podsumowanie").Cells(E, w).Select
L = ActiveCell.Address
Range(L).Value = T

'Kopiuj index
oWBK.Select
T = Range("C3").Value
Application.CutCopyMode = False
Selection.Copy

'Wklej index
w = 2
Sheets("podsumowanie").Select
Sheets("podsumowanie").Cells(E, w).Select
L = ActiveCell.Address
Range(L).Value = T

End If
Next j

Next oWBK

End Sub
Sub-kopiuj_wszystko()
Dim kolumna作为整数
用于此工作簿中的每个oWBK。工作表
对于j=1到1000
如果oWBK.Name“podsumowanie”,那么
“Kopiuj
oWBK.选择
x=范围(j和“1000”)。结束(xlUp)。第行“sprawdźilośćwypełnionych wierszy”
y=6'ogranicz do kolumny F
oWBK.单元格(x,y)。选择
Z=ActiveCell.Address
范围(“A9”,Z)。选择
'Application.CutCopyMode=False
选择,复制
“Wklej
床单(“podsumowanie”)。选择
E=范围(“c10000”)。结束(xlUp)。行
R=3
床单(“podsumowanie”)。单元格(E,R)。选择
活动表。粘贴
“Kopiuj kategorię
oWBK.选择
T=范围(“A1”).值
Application.CutCopyMode=False
选择,复制
“Wklej kategorię
w=1
床单(“podsumowanie”)。选择
床单(“podsumowanie”)。单元格(E、w)。选择
L=ActiveCell.Address
范围(L)。值=T
“Kopiuj指数
oWBK.选择
T=范围(“C3”).值
Application.CutCopyMode=False
选择,复制
“Wklej指数
w=2
床单(“podsumowanie”)。选择
床单(“podsumowanie”)。单元格(E、w)。选择
L=ActiveCell.Address
范围(L)。值=T
如果结束
下一个j
下一个oWBK
端接头

这里有一段非常简单的代码,无论有多少列都可以使用: (在每个单元格中循环(数据量越大,速度越慢)

子栏stone()
将wsT设置为工作表:设置wsT=ThisWorkbook.Sheets(“Sheet2”)
暗x等长
长得一样暗
暗z一样长
z=1
对于此工作簿中的每个wsF。工作表
x=1
y=1
如果wsF.Name wsT.Name,则
当Len(wsF.Cells(x,y))0
当Len(wsF.Cells(x,y))0
wsF.Cells(x,y).复制wsT.Cells(z,1):z=z+1:x=x+1
环
x=1:y=y+1
环
如果结束
下一个
端接头
以下代码复制每个范围并将其添加到图纸中: (使用larget数据集更快)

Sub-CopyColumnsToOne()
将wsT设置为工作表:设置wsT=ThisWorkbook.Sheets(“Sheet2”)
长得一样暗
对于此工作簿中的每个wsF。工作表
如果wsF.Name wsT.Name,则
对于y=1到6
wsF.Range(wsF.Cells(1,y),wsF.Cells(wsF.Rows.Count,y).End(xlUp.Row,y))。复制wsT.Cells(wsT.Range(“A65536”)。End(xlUp.Row+1,1)
下一个
如果结束
下一个
端接头

这里有一段非常简单的代码,无论有多少列都可以使用: (在每个单元格中循环(数据量越大,速度越慢)

子栏stone()
将wsT设置为工作表:设置wsT=ThisWorkbook.Sheets(“Sheet2”)
暗x等长
长得一样暗
暗z一样长
z=1
对于此工作簿中的每个wsF。工作表
x=1
y=1
如果wsF.Name wsT.Name,则
当Len(wsF.Cells(x,y))0
当Len(wsF.Cells(x,y))0
wsF.Cells(x,y).复制wsT.Cells(z,1):z=z+1:x=x+1
环
x=1:y=y+1
环
如果结束
下一个
端接头
以下代码复制每个范围并将其添加到图纸中: (使用larget数据集更快)

Sub-CopyColumnsToOne()
将wsT设置为工作表:设置wsT=ThisWorkbook.Sheets(“Sheet2”)
长得一样暗
对于此工作簿中的每个wsF。工作表
如果wsF.Name wsT.Name,则
对于y=1到6
wsF.Range(wsF.Cells(1,y),wsF.Cells(wsF.Rows.Count,y).End(xlUp.Row,y))。复制wsT.Cells(wsT.Range(“A65536”)。End(xlUp.Row+1,1)
下一个
如果结束
下一个
端接头
这一行不是“x=Range(j&“1000”).结束(xlUp).行“给出错误?我认为你应该使用单元格而不是范围”吗?这一行不是“x=Range(j&“1000”).结束(xlUp).行“给出错误?我认为你应该在这里使用单元格而不是范围”
Sub ColumnsToOne()

Dim wsT As Worksheet: Set wsT = ThisWorkbook.Sheets("Sheet2")
Dim x As Long
Dim y As Long
Dim z As Long

z = 1
For Each wsF In ThisWorkbook.Sheets
x = 1
y = 1
If wsF.Name <> wsT.Name Then
    Do While Len(wsF.Cells(x, y)) <> 0
        Do While Len(wsF.Cells(x, y)) <> 0
            wsF.Cells(x, y).Copy wsT.Cells(z, 1): z = z + 1: x = x + 1
        Loop
        x = 1: y = y + 1
    Loop
End If
Next

End Sub
Sub CopyColumnsToOne()
Dim wsT As Worksheet: Set wsT = ThisWorkbook.Sheets("Sheet2")
Dim y As Long
For Each wsF In ThisWorkbook.Sheets
    If wsF.Name <> wsT.Name Then
        For y = 1 To 6
            wsF.Range(wsF.Cells(1, y), wsF.Cells(wsF.Cells(wsF.Rows.Count, y).End(xlUp).Row, y)).Copy wsT.Cells(wsT.Range("A65536").End(xlUp).Row + 1, 1)
        Next
    End If
Next
End Sub