Excel 将数据复制到图纸中

Excel 将数据复制到图纸中,excel,vba,copy,Excel,Vba,Copy,共有2张,第1张和第2张。 Sheet1包含10列和5行,数据包括空白 要求从表1复制数据并放入另一张表2中,其中仅填充非空白单元格 我得到运行时错误1004-应用程序或对象定义错误 代码片段是:- Set wsht1 = ThisWorkbook.Worksheets("Sheet1") Set wsht2 = Sheets("Sheet2") finalrow = wsht1.Cells(wsht1.Rows.Count, 1).End(xlUp).Row For i = 1 To

共有2张,第1张和第2张。 Sheet1包含10列和5行,数据包括空白

要求从表1复制数据并放入另一张表2中,其中仅填充非空白单元格

我得到运行时错误1004-应用程序或对象定义错误

代码片段是:-

 Set wsht1 = ThisWorkbook.Worksheets("Sheet1")
 Set wsht2 = Sheets("Sheet2")
 finalrow = wsht1.Cells(wsht1.Rows.Count, 1).End(xlUp).Row

 For i = 1 To finalrow
 If wsht1.Cells(i, 1).Value <> " " Then
    Range(Cells(i, 2), Cells(i, 2)).Copy 
        Worksheets("Sheet2").Select
        wsht2.Range(Cells(1, i)).PasteSpecial Paste:=xlPasteFormats

    End If
Next i
Set wsht1=thishworkbook.Worksheets(“Sheet1”)
设置wsht2=板材(“板材2”)
finalrow=wsht1.Cells(wsht1.Rows.Count,1).End(xlUp).Row
对于i=1到最后一行
如果wsht1.Cells(i,1).Value为“”,则
范围(单元格(i,2),单元格(i,2))。复制
工作表(“表2”)。选择
wsht2.Range(单元格(1,i)).Paste特殊粘贴:=xlPasteFormats
如果结束
接下来我

你能帮我整理一下吗?

你不能定义这样的范围:

wsht2.Range(Cells(1, i))
您可以使用:

wsht2.Cells(1, i).PasteSpecial Paste:=xlPasteFormats
顺便说一句:使用此代码,您将找不到空单元格:

If wsht1.Cells(i, 1).Value <> " " Then
如果wsht1.Cells(i,1.Value)为“”,则
你应使用:

If wsht1.Cells(i, 1).Value <> "" Then
如果wsht1.Cells(i,1.Value)为“”,则
(不同之处在于引号之间缺少空格)

如果只想复制值并使用循环,我将执行以下操作:

Sub copying()

    Set wsht1 = ThisWorkbook.Worksheets("Sheet1")
     Set wsht2 = Sheets("Sheet2")
     finalrow = wsht1.Cells(wsht1.Rows.Count, 1).End(xlUp).Row

 For i = 1 To finalrow
    If wsht1.Cells(i, 1).Value <> "" Then
        For j = 1 To 5
            wsht2.Cells(i, j).Value = wsht1.Cells(i, j).Value
        Next j
    End If
Next i


End Sub
子复制()
设置wsht1=ThisWorkbook.Worksheets(“Sheet1”)
设置wsht2=板材(“板材2”)
finalrow=wsht1.Cells(wsht1.Rows.Count,1).End(xlUp).Row
对于i=1到最后一行
如果wsht1.Cells(i,1).Value为“”,则
对于j=1到5
wsht2.Cells(i,j).Value=wsht1.Cells(i,j).Value
下一个j
如果结束
接下来我
端接头

您不能定义这样的范围:

wsht2.Range(Cells(1, i))
您可以使用:

wsht2.Cells(1, i).PasteSpecial Paste:=xlPasteFormats
顺便说一句:使用此代码,您将找不到空单元格:

If wsht1.Cells(i, 1).Value <> " " Then
如果wsht1.Cells(i,1.Value)为“”,则
你应使用:

If wsht1.Cells(i, 1).Value <> "" Then
如果wsht1.Cells(i,1.Value)为“”,则
(不同之处在于引号之间缺少空格)

如果只想复制值并使用循环,我将执行以下操作:

Sub copying()

    Set wsht1 = ThisWorkbook.Worksheets("Sheet1")
     Set wsht2 = Sheets("Sheet2")
     finalrow = wsht1.Cells(wsht1.Rows.Count, 1).End(xlUp).Row

 For i = 1 To finalrow
    If wsht1.Cells(i, 1).Value <> "" Then
        For j = 1 To 5
            wsht2.Cells(i, j).Value = wsht1.Cells(i, j).Value
        Next j
    End If
Next i


End Sub
子复制()
设置wsht1=ThisWorkbook.Worksheets(“Sheet1”)
设置wsht2=板材(“板材2”)
finalrow=wsht1.Cells(wsht1.Rows.Count,1).End(xlUp).Row
对于i=1到最后一行
如果wsht1.Cells(i,1).Value为“”,则
对于j=1到5
wsht2.Cells(i,j).Value=wsht1.Cells(i,j).Value
下一个j
如果结束
接下来我
端接头

以下代码将仅将A列(非空单元格)中的值从第1页复制到第2页:

Dim j                           As Long

Set wsht1 = ThisWorkbook.Worksheets("Sheet1")
Set wsht2 = Sheets("Sheet2")
finalrow = wsht1.Cells(wsht1.Rows.Count, 1).End(xlUp).Row

j = 1
For i = 1 To finalrow
    With wsht1
        ' if you compare to empty string, you need to remove the space inside the quotes
        If .Cells(i, 1).Value <> "" And .Cells(i, 1).Value <> " " Then
            .Cells(i, 1).Copy ' since you are copying a single cell, there's no need to use a Range
            wsht2.Range("A" & j).PasteSpecial Paste:=xlPasteValues, Paste:=xlPasteFormats
            j = j + 1
        End If
    End With
Next i
Dim j尽可能长
设置wsht1=ThisWorkbook.Worksheets(“Sheet1”)
设置wsht2=板材(“板材2”)
finalrow=wsht1.Cells(wsht1.Rows.Count,1).End(xlUp).Row
j=1
对于i=1到最后一行
使用wsht1
'如果与空字符串比较,则需要删除引号内的空格
如果.Cells(i,1).Value“”和.Cells(i,1).Value“”,则
.Cells(i,1).Copy'由于您要复制单个单元格,因此不需要使用范围
wsht2.Range(“A”&j).Paste特殊粘贴:=xlPasteValues,粘贴:=xlPasteFormats
j=j+1
如果结束
以
接下来我

以下代码将仅将A列(非空单元格)中的值从第1页复制到第2页:

Dim j                           As Long

Set wsht1 = ThisWorkbook.Worksheets("Sheet1")
Set wsht2 = Sheets("Sheet2")
finalrow = wsht1.Cells(wsht1.Rows.Count, 1).End(xlUp).Row

j = 1
For i = 1 To finalrow
    With wsht1
        ' if you compare to empty string, you need to remove the space inside the quotes
        If .Cells(i, 1).Value <> "" And .Cells(i, 1).Value <> " " Then
            .Cells(i, 1).Copy ' since you are copying a single cell, there's no need to use a Range
            wsht2.Range("A" & j).PasteSpecial Paste:=xlPasteValues, Paste:=xlPasteFormats
            j = j + 1
        End If
    End With
Next i
Dim j尽可能长
设置wsht1=ThisWorkbook.Worksheets(“Sheet1”)
设置wsht2=板材(“板材2”)
finalrow=wsht1.Cells(wsht1.Rows.Count,1).End(xlUp).Row
j=1
对于i=1到最后一行
使用wsht1
'如果与空字符串比较,则需要删除引号内的空格
如果.Cells(i,1).Value“”和.Cells(i,1).Value“”,则
.Cells(i,1).Copy'由于您要复制单个单元格,因此不需要使用范围
wsht2.Range(“A”&j).Paste特殊粘贴:=xlPasteValues,粘贴:=xlPasteFormats
j=j+1
如果结束
以
接下来我

如果您在工作表1中只有5个单元格包含数据,并且只希望将这5行复制到工作表2中,请使用以下方法,类似于上面Shai的回答,并为工作表2中的行添加一个额外的计数器

Sub copying()

Set wsht1 = ThisWorkbook.Worksheets("Sheet1")
Set wsht2 = Sheets("Sheet2")
finalrow = wsht1.Cells(wsht1.Rows.Count, 1).End(xlUp).Row
k = 1

For i = 1 To finalrow
    If wsht1.Cells(i, 1).Value <> "" Then
        For j = 1 To 5
            wsht2.Cells(k, j).Value = wsht1.Cells(i, j).Value
        Next j
        k = k + 1
    End If
Next i
End Sub

如果您在工作表1中只有5个单元格包含数据,并且只希望将这5行复制到工作表2,请使用以下方法,类似于上面Shai的回答,并为工作表2中的行添加一个额外的计数器

Sub copying()

Set wsht1 = ThisWorkbook.Worksheets("Sheet1")
Set wsht2 = Sheets("Sheet2")
finalrow = wsht1.Cells(wsht1.Rows.Count, 1).End(xlUp).Row
k = 1

For i = 1 To finalrow
    If wsht1.Cells(i, 1).Value <> "" Then
        For j = 1 To 5
            wsht2.Cells(k, j).Value = wsht1.Cells(i, j).Value
        Next j
        k = k + 1
    End If
Next i
End Sub


您看起来正在切换到工作表2,因此第二次运行循环时,Range(单元格…)将引用并从工作表2复制,而不是wsht1。错误在哪里?错误发生在我尝试运行代码时!运行时错误-1004应用程序定义或对象定义error@Prabhu这行
范围是什么(单元格(i,2),单元格(i,2)).Copy
?是否要复制单个单元格的一个范围?@ShaiRado我想复制该单元格(在该范围内)并将其粘贴到另一个工作表单元格。@Prabhu但在您的代码中,您只是复制格式,是否也要复制值?您看起来正在切换到工作表2,因此第二次运行循环时,请选择范围(单元格….将引用并从工作表2而不是wsht1复制。错误在哪里?错误发生在我尝试运行代码时!运行时错误-1004应用程序定义或对象定义error@Prabhu这行
范围是什么(单元格(i,2),单元格(i,2)).Copy
?是否要复制单个单元格的某个范围?@ShaiRado我要复制该单元格(在该范围内)并将其粘贴到另一个工作表单元格。@Prabhu但在您的代码中,您只是在复制格式,是否也要复制值?我更改了代码,但当我放置一个分隔符时,我可以看到单元格已复制,但未正确粘贴到目标wsht2。单元格(I,1).PasteSpecial Paste:=xlPasteFormatsI更改了代码,但当我放置一个中断符时,我可以看到单元格被复制,但没有正确粘贴到目标wsht2。单元格(i,1)。PasteSpecial Paste:=xlPasteFormatsHi,感谢代码。当我运行代码时,确实得到了值,但仍然带有空格:(@Prabhu也许您的单元格中也有空格,请尝试编辑代码此代码将始终在
wsht2
中创建空格,因为您使用
i
来说明数据的粘贴位置,您需要