Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.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_Excel - Fatal编程技术网

Vba 根据另一页上的列表复制和粘贴特定列

Vba 根据另一页上的列表复制和粘贴特定列,vba,excel,Vba,Excel,我在“Sheet2”上有一个预先确定的列标题列表。我想写一个宏来循环这些,在“Sheet1”上搜索匹配的列标题,并将它们粘贴到“Sheet3”上 非常感谢:) 到目前为止,我提出了以下建议: Sub cppp() Range("K2").Select Selection.AutoFill Destination:=Range("K2:K10"), Type:=xlFillDefault Dim lr As Long, i As Long lr = Range("K2").End(

我在“Sheet2”上有一个预先确定的列标题列表。我想写一个宏来循环这些,在“Sheet1”上搜索匹配的列标题,并将它们粘贴到“Sheet3”上

非常感谢:)

到目前为止,我提出了以下建议:

Sub cppp() 
Range("K2").Select Selection.AutoFill Destination:=Range("K2:K10"), Type:=xlFillDefault     

Dim lr As Long, i As Long 
lr = Range("K2").End(xlDown).Row 

For i = lr To 1 Step -1 
    If Cells(lr, 11).Value = Range("A2") Then 'STUCK 
    End If
    lr = lr - 1 
Next i 
End Sub 

看看这对你有用吗

Sub sample()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim sh3 As Worksheet
Dim rngLookupValues As Range
Dim rngHeaders As Range
Dim cValue As Range
Dim rngCellsToCopy As Range
Dim lngColumnToCopy As Long
Dim lngCurFirstEmptyColumn As Long

Set sh1 = Sheets("Sheet1")
Set sh2 = Sheets("Sheet2")
Set sh3 = Sheets("Sheet3")
With sh2
    Set rngLookupValues = .Range("A1", .Range("A" & .Rows.Count).End(xlUp))
End With

With sh1
    Set rngHeaders = .Range("A1", .Range("A1").End(xlToRight))
End With

For Each cValue In rngLookupValues
    lngColumnToCopy = WorksheetFunction.Match(cValue, rngHeaders, 0)

    With sh1
        Set rngCellsToCopy = .Range(.Cells(1, lngColumnToCopy), .Cells(Rows.Count, lngColumnToCopy).End(xlUp))
    End With

    With sh3
        lngCurFirstEmptyColumn = .Cells(1, Columns.Count).End(xlToLeft).Column + 1
    End With

    sh3.Cells(1, lngCurFirstEmptyColumn).Resize(rngCellsToCopy.Rows.Count).Value = rngCellsToCopy.Value
Next cValue

With sh3.Range("A1")
    If Len(.Value) < 1 Then
        .EntireColumn.Delete
    End If
End With
End Sub
子样本()
Dim sh1作为工作表
Dim sh2 As工作表
Dim sh3 As工作表
将rngLookupValues设置为范围
作为范围的调光器
变暗C值作为范围
变暗RNG单元格复制为范围
Dim LNGColumntopy尽可能长
Dim lngCurFirstEmptyColumn尽可能长
设置sh1=板材(“板材1”)
设置sh2=板材(“板材2”)
设置sh3=板材(“板材3”)
含sh2
设置rngLookupValues=.Range(“A1”、.Range(“A”&.Rows.Count).End(xlUp))
以
与sh1
设置RNG引线=.Range(“A1”),.Range(“A1”).End(xlToRight))
以
对于rngLookupValues中的每个cValue
lngColumnToCopy=工作表函数.Match(cValue,rngHeaders,0)
与sh1
设置rngCellsToCopy=.Range(.Cells(1,lngcolumntopy),.Cells(Rows.Count,lngcolumntopy).End(xlUp))
以
用sh3
lngCurFirstEmptyColumn=.Cells(1,Columns.Count).End(xlToLeft).Column+1
以
sh3.Cells(1,lngCurFirstEmptyColumn)。调整大小(rngCellsToCopy.Rows.Count)。Value=rngCellsToCopy.Value
下一个C值
带sh3.量程(“A1”)
如果Len(.Value)<1,则
.entireclumn.Delete
如果结束
以
端接头

您试过什么了吗,或者只是想告诉我们您的意图?哎呀,对不起。清晨。Sub cppp()范围(“K2”)。选择Selection.AutoFill Destination:=范围(“K2:K10”),键入:=xlFillDefault Dim lr As Long,i As Long lr=范围(“K2”)。结束(xlDown)。i=lr到1步的行-1 If单元格(lr,11)。值=范围(“A2”)然后,如果lr=lr-1,则“卡住结束”。下一步,我结束Sub。我尝试先在一个页面内部完成它,但没有成功。我的技能已经过时了。很抱歉,谢谢你的帮助。我用F8完成了,但由于某些原因没有结果。我会到处玩,这看起来很有希望!你可以随意分享我试图上传到学校使用的ftp的链接,但我不能。关于如何链接Google Drive、DropBox、Box.Com、wetransfer.Com、wikisend.Com、fileswap.Com、MediaFire.Com的想法太多了。所有的网站都提供免费共享文件或托管文件的功能,我认为media fire甚至不需要你在我上次检查时注册。您可以在不登录的情况下上载,然后共享链接。试试其中一个。你是一个了不起的帮助,但实际上每个网站都不允许工作,被它阻止了。如果需要的话,今晚我会想办法的。谢谢。