Excel 将所有图纸中的A列插入新图纸的A列

Excel 将所有图纸中的A列插入新图纸的A列,excel,vba,Excel,Vba,我想将所有图纸A列中的所有值堆叠到新图纸A列中。根据图纸的不同,这些列的长度不同。我以前成功地插入了列,但它插入了公式而不是列的值,并且它水平插入而不是垂直插入 Sub Vlookpage() Dim WS As Worksheet Dim i As Integer 'add sheet and name it lookup Sheets.Add After:=Sheets(Sheets.Count) ActiveSheet.Name = "Lookup"

我想将所有图纸A列中的所有值堆叠到新图纸A列中。根据图纸的不同,这些列的长度不同。我以前成功地插入了列,但它插入了公式而不是列的值,并且它水平插入而不是垂直插入

Sub Vlookpage()
Dim WS As Worksheet
Dim i As Integer

'add sheet and name it lookup
    Sheets.Add After:=Sheets(Sheets.Count)
    ActiveSheet.Name = "Lookup"
'take all column "A"s and add them to "vlookup"
    For i = 1 To Worksheets.Count - 1
    Worksheets(i).Range("A:A").Copy
    Worksheets(i).Range("A:A").PasteSpecial Paste:=xlPasteValues
    Worksheets(i).Range("A:A").Copy
    Worksheets("Lookup").Range("A:A").Insert (xlShiftDown)
        Next i
'purge duplicates
    Worksheets("Lookup").Range("A:A").RemoveDuplicates
End Sub

列仍在水平插入,而不是堆叠

请尝试下一个代码:

Sub Vlookpage()
 Dim WS As Worksheet, shLkp As Worksheet, i As Integer
 Dim lastRowL As Long, lastRowWs As Long, arrAA

   'add sheet and name it lookup
    Set shLkp = Sheets.Add(After:=Sheets(Sheets.count))
    shLkp.Name = "lookup"

   'take all column "A"s and add them to "vlookup"
    For Each WS In Worksheets
        If WS.Name <> shLkp.Name Then
            lastRowWs = WS.Range("A" & rows.count).End(xlUp).row
            lastRowL = shLkp.Range("A" & rows.count).End(xlUp).row
            arrAA = WS.Range("A1:A" & lastRowWs).Value

            shLkp.Range("A" & lastRowL + 1).Resize(UBound(arrAA), 1).Value = arrAA
        End If
    Next WS
   'purge duplicates
    shLkp.Range("A:A").RemoveDuplicates
End Sub
Sub-Vlookpage()
Dim WS作为工作表,shLkp作为工作表,i作为整数
调暗lastRowL尽可能长,LastRowls尽可能长,arrAA
'添加工作表并将其命名为查找
设置shLkp=Sheets.Add(之后:=Sheets(Sheets.count))
shLkp.Name=“查找”
'将所有列“A”添加到“vlookup”
对于工作表中的每个WS
如果WS.Name shLkp.Name那么
lastRowWs=WS.Range(“A”&rows.count).End(xlUp).row
lastRowL=shLkp.Range(“A”&rows.count).End(xlUp).row
arrAA=WS.Range(“A1:A”&lastRowWs.Value
shLkp.Range(“A”&lastRowL+1).调整大小(UBound(arrAA),1).值=arrAA
如果结束
下一个WS
'清除重复项
shLkp.范围(“A:A”)。移除的副本
端接头

完美!我对删除重复项做了一些修改,因为有多余的空格,但除此之外,这正是我要找的代码@迈克尔:我只是按照你的代码(推导出的)逻辑去做。那么,我应该理解上面的代码没有回答你的问题吗?@Michael-当你将这个答案评论为“完美!”时,最好也勾选绿色复选标记来接受它。