Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.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
excel vba中的列循环_Excel_Vba - Fatal编程技术网

excel 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

我对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 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将缩短您不快乐的生活。另找一条路,我的朋友。