对此有任何帮助。
如果列(R)的同一行中的单元格=“ Y”和列(B)的同一行=“月”中,我试图将列(G)中的单元格复制到另一个工作表中
我让它仅适用于“ Y”标准,但是一旦添加了“月”,此按钮便停止工作了?
这是我的代码;
ggplot(profile_results, aes(x=Question, group=Answer, fill=Answer, y=Value)) +
geom_bar( stat="identity") +
scale_fill_brewer(palette = "Set1") +
coord_flip() +
facet_grid(Profile~.)
任何帮助将不胜感激。
谢谢
答案 0 :(得分:0)
至少,您忘记了一个End With和一个End If。但是无论如何,从逻辑上讲这是不正确的。
Dim LR As Long, i As Long
With Sheets("Savings Q4")
LR = .Range("R" & Rows.count).End(xlUp).Row
For i = 1 To LR
With .Range("R" & i)
If .Value = "Y" Then
With .Range("B" & i)
If .Value = "January" Then
Sheets("Savings Q4").Range("G:G").Copy Destination:=Sheets("Cifas Loadings").Range("A:A")
End If
End With
End If
End With
Next i
End With
更容易使用,例如
if Range("R"& i).value="Y" and Range("B" & i).value = "Month"
COPE CELLS
end if
答案 1 :(得分:0)
With
条语句的数量必须等于End With
条语句的数量。
If
语句的数量必须等于End If
语句的数量,除非存在“单行” If语句。 / p>
Alexey C的解决方案使那些With
-s和If
-s一致,但是问题仍然存在。
在编写With .Range("R" & i)
时,它指的是前Sheets("Savings Q4")
条语句中的With
,实际上是在缩短行数
With Sheets("Savings Q4").Range("R" & i)
确定。
稍后您写With .Range("B" & i)
时,它不是指Sheets("Savings Q4")
,而是指.Range("R" & i)
,即您不是在缩短With Sheets("Savings Q4").Range("B" & i)
行,而是
With Sheets("Savings Q4").Range("R" & i).Range("B" & i)
错误。
Matteo NNZ正确地指出,可以使用If
运算符将If
语句缩短为一个And
语句。
写作时
Sheets("Savings Q4").Range("G:G").Copy_
Destination:=Sheets("Cifas Loadings").Range("A:A")
您要将整个G
列复制到整个A
列。由于这是一个循环(For i = 1 to LR
),因此每次代码“遇到”“ 一月”和“ 是”时,它都会复制 列。您极不可能尝试实现该功能。
- 摆脱“内部”
With
。- 使用
If
减少And
的使用。- 将 COLUMN 范围
G:G
和A:A
更改为相应的 CELL 范围。- 摆脱
Destination:=
。
Sub WithIf()
Dim LR As Long, i As Long
With Sheets("Savings Q4")
LR = .Range("R" & Rows.Count).End(xlUp).Row
For i = 1 To LR
If .Range("R" & i).Value = "Y" And _
.Range("B" & i).Value = "January" Then
.Range("G" & i).Copy Sheets("Cifas Loadings").Range("A" & i)
End If
Next i
End With
End Sub
另一个问题可能是您不希望将A
列数据复制到G
列数据的同一行中。如果是这种情况,您应该应用相同的LR = .Range("R" & Rows.Count).End(xlUp).Row
逻辑并将其集成到参考“ Cifas Loadings”工作表的A
列的代码中。