VBA将数据从一张图纸复制到另一张图纸,如果单元格为空,则转到下一个单元格
我试图找出如何编写代码,如果在Sheet1上给定一组数据: 例如: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
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设置为整数
,但这只是在选项显式
的情况下。