不同列中的VBA检查范围
我有一个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列,但我无法在每个工作表中的列之间进行循环:不同列中的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
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