Vba 如何复制所有非空单元格并将其粘贴到其他工作表中的下一个可用单元格中

Vba 如何复制所有非空单元格并将其粘贴到其他工作表中的下一个可用单元格中,vba,excel,Vba,Excel,我想复制表1“交货摘要”中的值。我要复制的单元格将来自A18:A160,所有单元格都不是空的 下一步是将非空单元格中的值粘贴到表2“发货登记簿”上,该登记簿将从单元格A2开始,如果单元格非空,则向下。我之前请一位朋友帮我做了这个,我模糊地记得他添加了一个循环和+1函数,因为每次一个单元格有一个值,宏都必须移动到下一个单元格 试试这个: Private Sub copyNon_EmptyCells() Dim ws1 As Worksheet, ws2 As Worksheet D

我想复制表1“交货摘要”中的值。我要复制的单元格将来自A18:A160,所有单元格都不是空的

下一步是将非空单元格中的值粘贴到表2“发货登记簿”上,该登记簿将从单元格A2开始,如果单元格非空,则向下。我之前请一位朋友帮我做了这个,我模糊地记得他添加了一个循环和+1函数,因为每次一个单元格有一个值,宏都必须移动到下一个单元格

试试这个:

Private Sub copyNon_EmptyCells()
    Dim ws1 As Worksheet, ws2 As Worksheet
    Dim vals() As String, valCount As Integer
    Dim lastRow As Integer, r As Integer

    Set ws1 = Sheets(1)
    Set ws2 = Sheets(2)

    ' set last row variable
    lastRow = ws1.Cells(ws1.Rows.Count, 1).End(xlUp).Row

    For r = 18 To lastRow
        If (Not ws1.Cells(r, 1) = vbNullString) Then
            ReDim Preserve vals(valCount)
            vals(valCount) = ws1.Cells(r, 1)
            valCount = valCount + 1
        End If
    Next r

    For r = 0 To valCount - 1
        ws2.Cells(r + 2, 2) = vals(r)
    Next r

End Sub

请说得更具体些,我真的很难解释,但我会尽力的。请对我耐心点。我真的很难解释,但我会尽力的。请对我耐心点。我要完成的是从sheet1“Delivery Docket”复制值。我要复制的单元格将来自A18:A160所有非空单元格,下一步是将非空单元格中的值粘贴到Sheet2“Shipping register”上,它将从单元格A2开始,如果单元格非空,则向下粘贴。我以前请一位朋友帮我做这个,我模糊地记得他添加了一个循环和+1函数,因为每次一个单元格有一个值,宏就必须移动到下一个单元格。上面的代码完全按照您的要求执行,只是您最初说希望值从“sheet2 B2向下”开始要按名称引用工作表,请使用Set ws1=sheets(“Delivery Docket”)等。For循环减少了对“+1”的需要(在Do循环中需要“+1”),因为“Next”命令会将计数器值增加1(如果使用Step参数,则增加指定值)。