Vba 向上粘贴数据
有人能提供这样的代码吗:从底部开始,如果“C”中的值为空,请查看“B”(如果不是空白,请复制C和D中的值);如果“B”为空,请查看“A”(如果不是B和D中的空白复制值);如果“A”为空,则移动到下一个(如果不是空,则复制A和D中的值) 我需要脚本从页面底部开始向上移动。例如,从第9行开始,当逻辑运行到第1行时结束 使用以下数据的最终结果应如下所示:Vba 向上粘贴数据,vba,excel,excel-2007,Vba,Excel,Excel 2007,有人能提供这样的代码吗:从底部开始,如果“C”中的值为空,请查看“B”(如果不是空白,请复制C和D中的值);如果“B”为空,请查看“A”(如果不是B和D中的空白复制值);如果“A”为空,则移动到下一个(如果不是空,则复制A和D中的值) 我需要脚本从页面底部开始向上移动。例如,从第9行开始,当逻辑运行到第1行时结束 使用以下数据的最终结果应如下所示: END RESULT color 12 primary 35 blue 1 shape 685
END RESULT
color 12
primary 35
blue 1
shape 685
rounded 1
oval 25
size 21
big 56
giant 10
DATA:
A B C D
1 size big giant 10
2 size big 56
3 size 21
4 shape rounded oval 25
5 shape rounded 1
6 shape 685
7 color primary blue 1
8 color primary 35
9 color 12
我不明白为什么必须向上移动,因为行之间没有关系 将以下公式复制到E1中并向下复制,即可得到所需的值
=IF(C1="",IF(B1="",A1,B1),C1)
这与列出所需结果的顺序不同。您是要对其进行排序,还是只显示计算顺序
响应附加信息的附加部分
转到F列底部,当前为F9,然后键入:
=ROW(F$9)-ROW(F9)
将此公式复制到该列中,得到0到8的数字。现在,您可以按F列按升序或降序排序,具体取决于所需的视图
我将离开Siddharth Rout,为您提供与此等效的VBA。顺便说一下,Siddharth已经创建了两个额外的列,因此结果是您显示的列序列。我认为这是一个很好的补充。如果您喜欢公式方法,也可以使用公式。Tony已经为您提供了实现所需内容的最简单方法,但是如果您仍然需要一个代码,该代码可以为您提供精确的输出,请尝试此方法。输出将以F:G列显示
Option Explicit
Sub Sample()
Dim LastRow As Long, Rw As Long, i As Long
LastRow = Range("D" & Rows.Count).End(xlUp).Row
Rw = 1
For i = LastRow To 1 Step -1
If Len(Trim(Range("C" & i).Value)) = 0 Then
If Len(Trim(Range("B" & i).Value)) = 0 Then
If Len(Trim(Range("A" & i).Value)) <> 0 Then
Range("F" & Rw).Value = Range("A" & i).Value
Range("G" & Rw).Value = Range("D" & i).Value
End If
Else
Range("F" & Rw).Value = Range("B" & i).Value
Range("G" & Rw).Value = Range("D" & i).Value
End If
Else
Range("F" & Rw).Value = Range("C" & i).Value
Range("G" & Rw).Value = Range("D" & i).Value
End If
Rw = Rw + 1
Next i
End Sub
选项显式
子样本()
昏暗的最后一排一样长,Rw一样长,我一样长
LastRow=范围(“D”和Rows.Count).End(xlUp).Row
Rw=1
对于i=最后一行到1步骤-1
如果Len(Trim(范围(“C”&i).Value))=0,则
如果Len(Trim(范围(“B”&i).Value))=0,则
如果Len(微调(范围(“A”&i).Value))为0,则
范围(“F”和Rw).值=范围(“A”和i).值
范围(“G”和Rw).值=范围(“D”和i).值
如果结束
其他的
范围(“F”和Rw).值=范围(“B”和i).值
范围(“G”和Rw).值=范围(“D”和i).值
如果结束
其他的
范围(“F”和Rw).值=范围(“C”和i).值
范围(“G”和Rw).值=范围(“D”和i).值
如果结束
Rw=Rw+1
接下来我
端接头
如果您编辑您的样本数据和要求的结果,使其至少包含一个A为空的情况,您的问题会更清楚。在开始新问题之前,如何提供反馈和/或将您的上一个问题标记为已解决。我需要反向排序,因为颜色需要高于主色,即高于蓝色。