Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.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,我试图找出如何编写代码,如果在Sheet1上给定一组数据: 例如: C 30 1234 31 0 32 0 33 56 34 789 (所有这些数字的范围为1-7位。) 我想将数据复制到Sheet2上,如: X Y Z Z AA AB AC AD 57 1 2 3 4 58

我试图找出如何编写代码,如果在Sheet1上给定一组数据:

例如:

     C
30   1234
31   0
32   0
33   56
34   789
(所有这些数字的范围为1-7位。)

我想将数据复制到Sheet2上,如:

     X     Y     Z     Z     AA     AB     AC     AD
57                            1     2      3      4
58                                         5      6
59                                  7      8      9
这只是一个简单的例子,我有一个很长的数据列表,有时包含数字0,但我只希望将大于零的数字复制到Sheet2上

到目前为止,这是我编写的代码:

Sub IfBlankNext()
Dim i As Integer
For i = 1 To 99
    If Worksheets("Sheet1").Cells(i,1).Value <> 0 Then
       {code code code}
    End If
Next i
End Sub
Sub-IfBlankNext()
作为整数的Dim i
对于i=1到99
如果工作表(“Sheet1”)。单元格(i,1)。值为0,则
{code}
如果结束
接下来我
端接头
出于某种原因,此代码只返回最后一个单元格——在本例中,是代码运行前Sheet1单元格(99,3)中的单元格数据:

Sub IfBlankNext()
    Dim i As Integer, x As Integer, LastRow As Long, DestLast As Long, HoldVal As String
    'Define your last row of data by going to end and moving up:
    LastRow = Sheets("Sheet1").Range("C" & Rows.Count).End(xlUp).Row

    For i = 1 To LastRow
        If Sheets("Sheet1").Range("C" & i).Value > 0 Then
            'Define the LastCol on your destination sheet using similar method as row:
            DestLast = Sheets("Sheet2").Range("X" & Rows.Count).End(xlUp).Row + 1
            If DestLast < 58 Then DestLast = 58
            HoldVal = Sheets("Sheet1").Range("C" & i).Value
            For x = 1 To Len(HoldVal)
                Sheets("Sheet2").Cells(DestLast, x + 23).Value = Mid(HoldVal, x, 1)
            Next x
        End If
    Next i
End Sub

在我的代码运行之前:

Sub IfBlankNext()
    Dim i As Integer, x As Integer, LastRow As Long, DestLast As Long, HoldVal As String
    'Define your last row of data by going to end and moving up:
    LastRow = Sheets("Sheet1").Range("C" & Rows.Count).End(xlUp).Row

    For i = 1 To LastRow
        If Sheets("Sheet1").Range("C" & i).Value > 0 Then
            'Define the LastCol on your destination sheet using similar method as row:
            DestLast = Sheets("Sheet2").Range("X" & Rows.Count).End(xlUp).Row + 1
            If DestLast < 58 Then DestLast = 58
            HoldVal = Sheets("Sheet1").Range("C" & i).Value
            For x = 1 To Len(HoldVal)
                Sheets("Sheet2").Cells(DestLast, x + 23).Value = Mid(HoldVal, x, 1)
            Next x
        End If
    Next i
End Sub


您的问题可能在
{code}
部分。。。您的循环似乎已设置为正确通过A列的行
1到99
。如果您只希望单元格大于0,则可能应使用
>0
作为条件。你能为你的问题添加额外的代码吗?@Byron我在IF语句中的代码基本上是工作表(“Sheet2”).Range(“X57”).Formula=“一个公式,比如MID(),它可以根据数字的长度和数字应该放在哪个单元格中,从每个数字中抽出一个数字”。考虑到如果数字是7位或6位或。。。etc和MID()公式,那么有没有更简单的方法写出它们呢?您的问题可能在
{code}
部分。。。您的循环似乎已设置为正确通过A列的行
1到99
。如果您只希望单元格大于0,则可能应使用
>0
作为条件。你能为你的问题添加额外的代码吗?@Byron我在IF语句中的代码基本上是工作表(“Sheet2”).Range(“X57”).Formula=“一个公式,比如MID(),它可以根据数字的长度和数字应该放在哪个单元格中,从每个数字中抽出一个数字”。考虑到如果数字是7位或6位或。。。etc和MID()公式,那么有没有更简单的方法写出它们呢?很抱歉,我应该更具体地说明我希望代码最后做什么,但我编辑了我的问题。非常感谢您在修订之前为我的问题提出了解决方案!出于某种原因,我一直得到错误424:Object required,它指的是DestLast=Sheets(“Sheet1”).Range(“X”&Row.Count).End(xlUp).Row+1。@Cindy它必须是“A”,DestLast指的是目标工作表,在我的示例中是“Sheet2”。检查一下你的工作表名称。哦,对不起,我的代码中的工作表是对的,我只是在注释中打错了。另外,对于我的数据,实际上,我希望它从第1页的C列转移到第2页的X列,所以我再次重写了我的问题,以便更具体!这对我有用。不确定是否会投反对票。我也必须
将x设置为整数
,但这只是在
选项显式
的情况下。很抱歉,我应该更具体地说明我希望代码最后做什么,但我编辑了我的问题。非常感谢您在修订之前为我的问题提出了解决方案!出于某种原因,我一直得到错误424:Object required,它指的是DestLast=Sheets(“Sheet1”).Range(“X”&Row.Count).End(xlUp).Row+1。@Cindy它必须是“A”,DestLast指的是目标工作表,在我的示例中是“Sheet2”。检查一下你的工作表名称。哦,对不起,我的代码中的工作表是对的,我只是在注释中打错了。另外,对于我的数据,实际上,我希望它从第1页的C列转移到第2页的X列,所以我再次重写了我的问题,以便更具体!这对我有用。不确定是否会投反对票。我还必须
将x设置为整数
,但这只是在
选项显式
的情况下。