Excel 循环仅在包含数据的行上粘贴
有人能帮我修改这个循环以进行复制和粘贴吗 我想粘贴Excel 循环仅在包含数据的行上粘贴,excel,excel-formula,vba,Excel,Excel Formula,Vba,有人能帮我修改这个循环以进行复制和粘贴吗 我想粘贴范围(“S”&Y”)。仅当范围(“F”&Y”)中存在时间、日期或n/a形式的数据时,才在同一行中选择。我想重复这个过程,直到范围(“F”&Y)中的最后一个数据点。我现在在范围(“F”&Y)中的行中有数据,那么它不应该粘贴范围(“S”&Y)。当范围(“F”&Y)中有数据时,它每三行显示一次。有时,数据中有一个间隙,可能需要10行,直到下一个数据序列每三行返回一次 错误:即使范围(“F”&Y”)中没有数据,它也不会在该数据集的末尾停止并粘贴。有人能帮
范围(“S”&Y”)。仅当范围(“F”&Y”)中存在时间、日期或n/a形式的数据时,才在同一行中选择。我想重复这个过程,直到范围(“F”&Y)
中的最后一个数据点。我现在在范围(“F”&Y)
中的行中有数据,那么它不应该粘贴范围(“S”&Y)
。当范围(“F”&Y)
中有数据时,它每三行显示一次。有时,数据中有一个间隙,可能需要10行,直到下一个数据序列每三行返回一次
错误:即使范围(“F”&Y”)中没有数据,它也不会在该数据集的末尾停止并粘贴。
有人能帮忙吗
我的代码
Dim lastRow As Long
Range("S16:Y16").Select
Selection.Copy
For Y = 19 To 2000 Step 3
If Range("F" & Y).Value = lastRow Then Exit For
Range("S" & Y).Select
ActiveSheet.Paste
lastRow = ActiveSheet.Range("B" & Rows.Count).End(xlUp).Row
Next Y
Application.ScreenUpdating = True
MsgBox lastRow
也许您可以使用S到Y列中的工作表公式执行此操作,如下所示:
=IF($F:$F<>"",S:S,"")
现在它将从最后一行向后运行到19行
您的代码正在对照最后一行的编号检查单元格范围(“F”&Y)或单元格(Y,6)的值。也许您可以使用S到Y列中的工作表公式执行此操作,如下所示:
=IF($F:$F<>"",S:S,"")
现在它将从最后一行向后运行到19行
您的代码正在对照最后一行的数量检查单元格范围(“F”&Y)或单元格(Y,6)的值。一些指针:
首先,当lastRow
大于2000并且您的if
语句没有检查当前行号而只是检查其中的值时,它不会在末尾停止。另外,你很有可能跳过最后一排,因为你一次跳3排。我建议您使用以下if
语句:
If Range("F" & Y).row > lastRow Then Exit For
对于您的lastrow
变量,我建议以下内容更准确:
lastrow = activesheet.cells.find("*", range("A1"), , , xlbyrows, xlprevious).row
此外,您在每行中粘贴数据时没有检查空白值,我会使用以下方法检查空白单元格:
if len(Application.WorksheetFunction.Clean(trim(range("F" & Y).value))) > 0 then
几点建议:
首先,当lastRow
大于2000并且您的if
语句没有检查当前行号而只是检查其中的值时,它不会在末尾停止。另外,你很有可能跳过最后一排,因为你一次跳3排。我建议您使用以下if
语句:
If Range("F" & Y).row > lastRow Then Exit For
对于您的lastrow
变量,我建议以下内容更准确:
lastrow = activesheet.cells.find("*", range("A1"), , , xlbyrows, xlprevious).row
此外,您在每行中粘贴数据时没有检查空白值,我会使用以下方法检查空白单元格:
if len(Application.WorksheetFunction.Clean(trim(range("F" & Y).value))) > 0 then
接下来,我在没有for的情况下遇到了编译错误。我不明白。停在下一个Ysorry,错过了一个终点如果,请立即尝试谢谢你的帮助。msg最后一行是1355,但它在1321停止。。。。它在数据集之间的空间是4而不是3之前停止过一次,但这不重要,所以我删除了一行,然后再次运行它。仍然没有转到最后一个数据行,它丢失了5个文件。任何想法。现在试试,它将从lastRow向后运行到row=19,在循环的每个迭代中跳过3行。顺便说一句,您可以检查vba.len(vba.trim(range(“F”)和Y.value))>0对于使用Debug.print vba.trim(range(“F”)和Y)遗漏的行是否正常工作.value在你的循环中?很抱歉,我不太擅长这个,但我正在学习。我想学习更好地理解它。我再次运行了它,但它没有反向运行。我还更改了这些单元格和行中的数据,它不会到达数据集的结尾。我如何进行测试?我下一个编译错误没有for。我不明白。停止d在Next Ysorry,错过了一个结尾如果,请立即尝试谢谢你的帮助。msg最后一行是1355,但它在1321停止…它在数据集之间的空格是4而不是3之前停止过一次,但这不重要,所以我删除了一行并再次运行。仍然没有转到最后一行,它错过了5个文件。有什么想法吗。现在尝试一下,它会成功的n从lastRow向后到row=19,每次循环迭代跳过3行。顺便说一句,您可以检查vba.len(vba.trim(range(“F”)和Y.value))>0对于使用Debug.print vba.trim(range(“F”)和Y)遗漏的行是否正常工作.循环中的值?很抱歉,我不是很擅长,但我正在学习。我想学习更好地理解它。我再次运行了它,但它没有反向运行。我还更改了这些单元格和行中的数据,它不会到达数据集的末尾。我如何进行测试?如果您选中空白范围(“F”&Y)的xk.value
您是否需要跳到每三行?您能否告诉我们为什么要跳三行?如果可以,请在所有问题上选择一个答案,如果您选中空白的范围(“F”&Y).value
您是否需要跳到每三行?能否告诉我们您为什么要跳三行?如果可以,请选择所有问题的答案