【发布时间】:2018-08-08 13:40:57
【问题描述】:
我的代码有一个循环,用于查找数据透视表中给定列的值是否是该行的最小值/最大值。需要注意的是,某些行有重复的特征条目,因此我有一组 If ElseIf 条件来跳过这些条目的复制过程。代码如下:
For i = 0 To 339
wfr = wfr + CStr(i + 5)
Sheets("ET Pivot").Select
If Sheets("ET Pivot").Range(wfr).Value = 7 Then
GoTo LoopExit
ElseIf Sheets("ET Pivot").Range(wfr).Value = 9 Then
GoTo LoopExit
ElseIf Sheets("ET Pivot").Range(wfr).Value = 99999.99 Then
GoTo LoopExit
ElseIf Sheets("ET Pivot").Range(wfr).Value = 1 Then
GoTo LoopExit
End If
If Sheets("ET Pivot").Range(wfr).Value = Sheets("ET Pivot").Range("AB" + CStr(i + 5)).Value Then
Sheets("ET Pivot").Select
Sheets("ET Pivot").Rows(i + 5 & ":" & i + 5).Select
Selection.Copy
Sheets("ET Outliers").Select
Sheets("ET Outliers").Range("A" + CStr(ic)).Select
ActiveSheet.Paste
Application.CutCopyMode = False
ic = ic + 1
ElseIf Sheets("ET Pivot").Range(wfr).Value = Sheets("ET Pivot").Range("AC" + CStr(i + 5)).Value Then
Sheets("ET Pivot").Select
Sheets("ET Pivot").Rows(i + 5 & ":" & i + 5).Select
Selection.Copy
Sheets("ET Outliers").Select
Sheets("ET Outliers").Range("A" + CStr(ic)).Select
ActiveSheet.Paste
ic = ic + 1
End If
LoopExit:
wfr = wfrc
Next i
前四个 If 语句是跳过条件。条件 9、99999.99 和 1 按计划工作。由于某种原因,7 条件不会触发 If 语句。我已经确保单元格值实际上是 7 并且没有四舍五入,我已经更改了条件的顺序,并且我首先添加了一个虚拟条件,一切都无济于事。我不确定为什么这个特定案例不起作用。
【问题讨论】:
-
您确定代码中没有拼写错误或包含“奇数”字符吗?您是否尝试过复制/粘贴有效的行,然后替换该值? (旁注:您没有使用 Select Case 而不是所有这些 ElseIf 的任何特殊原因?)
-
声明
wfr = wfr + CStr(i + 5)的想法是什么?wfr是什么数据类型和初始值(在你进入循环之前)? -
@FunThomas: wfr 是一个包含列值的单字母字符串,所以 wfr + CStr(i+5) 是一个特定的单元格(例如 F5)
-
@Cindy Meister:我没有使用 Select Case,因为我自学了 VBA,而且我不知道很多功能,包括 Select Case
-
您是否尝试将其转换为整数,如果它在舍入范围内,这将强制该值为 7?
If CInt(Sheets("ET Pivot").Range(wfr).Value) = 7
标签: excel vba for-loop if-statement