excel vba中的列循环
我对VBA编码非常陌生。我正在比较前几列中的数据,假设代码将新数据粘贴到新列中 这是可行的,因为它是一个固定的列excel vba中的列循环,excel,vba,Excel,Vba,我对VBA编码非常陌生。我正在比较前几列中的数据,假设代码将新数据粘贴到新列中 这是可行的,因为它是一个固定的列 Selection.AutoFill Destination:=Range("D2:D100") 但是我需要列是迭代的,所以我修改了它,这是我尝试过的,它不起作用 Dim n1 as Integer Dim n3 as Integer Dim Resultcol As Range n1 = 1 n3 = 6 Do While n1 < 5 Set Resu
Selection.AutoFill Destination:=Range("D2:D100")
但是我需要列是迭代的,所以我修改了它,这是我尝试过的,它不起作用
Dim n1 as Integer
Dim n3 as Integer
Dim Resultcol As Range
n1 = 1
n3 = 6
Do While n1 < 5
Set Resultcol = (Cells(2,n3), Cells(100,n3))
Selection.AutoFill Destination:=Range("Resultcol")
n3 = n3 + 2
n1 = n1 + 1
Loop
Dim n1为整数
尺寸n3为整数
Dim Resultcol As系列
n1=1
n3=6
当n1<5时,执行此操作
Set Resultcol=(单元格(2,n3),单元格(100,n3))
Selection.AutoFill目标:=范围(“Resultcol”)
n3=n3+2
n1=n1+1
环
整个代码如下所示:-
Sub commonality()
Dim n1 As Integer
Dim n2 As Integer
Dim n3 As Integer
Dim lotnum As Integer
Dim Resultcol As Range
'
' commonality Macro
' commonality
'
lotnum = InputBox("Number of lots to compare?" & vbCrLf & "Minimum 3 lots")
n1 = 1
n2 = 4
n3 = 6
Resultcol = Range(Cells(2, n3), Cells(100, n3))
Do While n1 < 4
Sheets("Export_to_Excel").Select
Columns("I:I").Select
Selection.Copy
Sheets("Sheet5").Select
Columns("A:A").Select
ActiveSheet.Paste
Sheets("Export_to_Excel (2)").Select
Columns("I:I").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Sheet5").Select
Columns("B:B").Select
ActiveSheet.Paste
Sheets("Export_to_Excel (3)").Select
Columns("I:I").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Sheet5").Select
Columns("C:C").Select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "EQPID"
Range("D2").Select
Range("D2").Select
Range("D2").Select
Selection.FormulaArray = _
"=LOOKUP(""zzz"",CHOOSE({1,2},"""",INDEX(R2C[-3]:R100C[-3],MATCH(0,COUNTIF(R1C:R[-1]C,R2C[-3]:R100C[-3])+IF(IF(COUNTIF(R2C[-2]:R100C[-2],R2C[-3]:R100C[-3])>0,1,0)+IF(COUNTIF(R2C[-1]:R100C[-1],R2C[-3]:R100C[-3])>0,1,0)=2,0,1),0))))"
Selection.AutoFill Destination:=Range("D2:D100"), Type:=xlFillDefault
n1 = 4
Loop
Do While n2 <= lotnum
Range("D2:D100").Select
ActiveWindow.SmallScroll Down:=-66
Sheets("Export_to_Excel (4)").Select
Columns("I:I").Select
Selection.Copy
Sheets("Sheet5").Select
Columns("E:E").Select
ActiveSheet.Paste
Sheets("Export_to_Excel (5)").Select
Columns("I:I").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Sheet5").Select
Columns("F:F").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("G2").Select
Selection.FormulaArray = _
"=LOOKUP(""zzz"",CHOOSE({1,2},"""",INDEX(R2C[-2]:R100C[-2],MATCH(0,COUNTIF(R1C:R[-1]C,R2C[-2]:R100C[-2])+IF(IF(COUNTIF(R2C[-1]:R100C[-1],R2C[-2]:R100C[-3])>0,1,0)=2,0,1),0))))"
Selection.AutoFill Destination:=Range(Resultcol), Type:=xlFillDefault
Range("G2:G85").Select
ActiveWindow.SmallScroll Down:=-57
Cells(n2, 14).Value = 1
n2 = n2 + 1
n3 = n3 + 2
Loop
End Sub
次公共性()
将n1设置为整数
作为整数的Dim n2
尺寸n3为整数
Dim lotnum作为整数
Dim Resultcol As系列
'
“公共性宏”
"共性",
'
lotnum=InputBox(“要比较的批次数?”&vbCrLf和“最少3个批次”)
n1=1
n2=4
n3=6
结果COL=范围(单元格(2,n3),单元格(100,n3))
当n1<4时,执行此操作
工作表(“导出到Excel”)。选择
列(“I:I”)。选择
选择,复制
图纸(“图纸5”)。选择
列(“A:A”)。选择
活动表。粘贴
工作表(“导出到Excel(2)”。选择
列(“I:I”)。选择
Application.CutCopyMode=False
选择,复制
图纸(“图纸5”)。选择
列(“B:B”)。选择
活动表。粘贴
工作表(“导出到Excel(3)”。选择
列(“I:I”)。选择
Application.CutCopyMode=False
选择,复制
图纸(“图纸5”)。选择
列(“C:C”)。选择
活动表。粘贴
Application.CutCopyMode=False
ActiveCell.FormulaR1C1=“EQPID”
范围(“D2”)。选择
范围(“D2”)。选择
范围(“D2”)。选择
Selection.FormulaArray=_
“=查找(“‘zzz’”),选择({1,2})”,索引(R2C[-3]:R100C[-3],匹配(0,COUNTIF(R1C:R[-1]C,R2C[-3]:R100C[-3])+IF(IF(COUNTIF(R2C[-2]:R100C[-2],R2C[-3]:R100C[-3])>0,1,0)+IF(COUNTIF(R2C R2C[-1]:R100C[-1]:R100C[-3])>0,1]))”),”
Selection.AutoFill目标:=范围(“D2:D100”),类型:=xlFillDefault
n1=4
环
当n2尝试时执行Destination:=Range(Resultcol)
不带引号引用您的范围变量。运行时错误'1004'方法'Range'对象'\u Global'失败如果有助于选择,则整个代码是这样的。FormulaArray=\uu'=LOOKUP(““zzz”),选择({1,2},“”),索引(R2C[-2]:R100C[-2],匹配(0,COUNTIF)(R1C:R[-1]C,R2C[-2]:R100C[-2])+IF(IF(COUNTIF(R2C[-1]:R100C[-1],R2C[-2]:R100C[-3])>0,1,0)=2,0,1),0)))Selection.AutoFill Destination:=Range(Resultcol),Type:=xlfilldefault如果使用此选项,它将把选择内容复制到5组不同的列对中。你不需要一个循环。它可能不起作用,因为您的选择
与目标范围的大小不同。因此,在选择中使用部分.code编写公式。然后,编写代码以复制公式。太复杂了。为什么不让代码来写结果呢?或者,至少,让代码在需要的地方编写公式?如果你允许我从经验中说,你的公式是为了让你终生不快乐而设计的。将VBA引入it将缩短您不快乐的生活。另找一条路,我的朋友。