VBA Excel如果列中出现某些值,请将其复制到同一行中的另一列
我正在与以下情况作斗争 我在U列中有一组批量数据,我必须从中过滤“缺少的极点”值。 接下来,我必须将这个“缺失极点”值复制到BN列,精确地复制到U列中的同一行,如下所示 我试过:VBA Excel如果列中出现某些值,请将其复制到同一行中的另一列,excel,vba,Excel,Vba,我正在与以下情况作斗争 我在U列中有一组批量数据,我必须从中过滤“缺少的极点”值。 接下来,我必须将这个“缺失极点”值复制到BN列,精确地复制到U列中的同一行,如下所示 我试过: Sub Flag() Dim lRow As Long If Range("U2:U" & lRow).Value = "Missing pole" Then Range("U2:U" & lRow).Copy Range(&
Sub Flag()
Dim lRow As Long
If Range("U2:U" & lRow).Value = "Missing pole" Then
Range("U2:U" & lRow).Copy
Range("BN2:BN" & lRow).PasteSpecial xlPasteValues
End If
End Sub
但我得到了一个错误:
对象“”的方法“”范围“”失败
调试器显示:
If Range("U2:U" & lRow).Value = "Missing pole" Then
其他线程如下所示:
但是没有一个合理的解决方案
如何将列中出现的特定值(在整个范围内)复制到另一列,并将其完全放在同一行中
下面是工作正常的VBA代码。错误是因为您正试图获取Range对象的值,您只需要一个For循环来遍历所有行,然后检查是否有“缺少极点”的值 代码如下:
Sub Flag()
Dim LastRow As Long
With ActiveSheet
LastRow = .Cells(.Rows.Count, "U").End(xlUp).Row
End With
For i = 2 To LastRow
If ActiveSheet.Range("U" & i) = "Missing pole" Then
ActiveSheet.Range("BN" & i).Value2 = ActiveSheet.Range("U" & i).Value2
End If
Next i
End Sub
下面是工作正常的VBA代码。错误是因为您正试图获取Range对象的值,您只需要一个For循环来遍历所有行,然后检查是否有“缺少极点”的值 代码如下:
Sub Flag()
Dim LastRow As Long
With ActiveSheet
LastRow = .Cells(.Rows.Count, "U").End(xlUp).Row
End With
For i = 2 To LastRow
If ActiveSheet.Range("U" & i) = "Missing pole" Then
ActiveSheet.Range("BN" & i).Value2 = ActiveSheet.Range("U" & i).Value2
End If
Next i
End Sub
可以通过以下方式使If语句不区分大小写:
Sub Flag()
Dim lRow As Long
Dim lLastRow As Long
lLastRow = Range("U" & Rows.Count).End(xlUp).Row
For lRow = 2 To lLastRow
If UCase$(Range("U" & lRow).Value) = "MISSING POLE" Then
' do what you want here
End If
Next
End Sub
可以通过以下方式使If语句不区分大小写:
Sub Flag()
Dim lRow As Long
Dim lLastRow As Long
lLastRow = Range("U" & Rows.Count).End(xlUp).Row
For lRow = 2 To lLastRow
If UCase$(Range("U" & lRow).Value) = "MISSING POLE" Then
' do what you want here
End If
Next
End Sub
您没有将
lRow
设置为任何值,因此其值为0
,Range(“U2:U0”)
不是有效的Range
。那么我如何在此处设置lRow?那么,您要查找哪一行?最后一个?一个包含一定价值的东西?有很多方法可以找到行值。我有“缺少的极点”值,从整个U列一直到最后一行。我需要将它们大致复制到同一行的BN列中。@braX我测试您删除的代码时,您的答案将被提升。您没有将lRow
设置为任何值,因此它的值是0
,Range(“U2:U0”)
不是有效的Range
。那么我如何在这里设置lRow呢,你想找哪一排?最后一个?一个包含一定价值的东西?有很多方法可以找到行值。我有“缺少的极点”值,从整个U列一直到最后一行。我需要将它们大致复制到同一行的BN列。@braX当我测试你删除的代码时,你的答案将被提升。嗯,没有错误,但没有反应。我发现了一个错误。应该是“缺杆”。这个范围内的多个值如何?嗯,没有错误,但在allOK没有反应。我发现了一个错误。应该是“缺杆”。这个范围内的多个值如何?在您的代码中:而不是范围(“U2:U”&lRow)。复制范围(“BN2:BN”&lRow)。粘贴特殊xlPasteValues它应该是范围(“BN2:BN”&lRow)。值=范围(“U”&lRow)。否则整个列都会被复制。在您的代码中:而不是范围(“U2:U”&lRow)。复制范围(“BN2:BN”&lRow).Paste特殊xlPasteValues它应该是范围(“BN2:BN”&lRow)。值=范围(“U”&lRow)。值,否则将复制整个列。