【发布时间】:2016-07-26 16:16:22
【问题描述】:
我希望我的程序删除column a (cA) is Fund ID 6347 OR 6349 AND 具有less than +/-100 基点影响的任何行 AND less than +/-50% price change
以下代码可用于删除行:either fund and a basis point impact +/- 100,但我不相信它可以按照我的意图工作,因为当我删除 @第一行中的 987654325@ 代码我的测试失败了,这让我相信我的代码在某种程度上可以部分工作,但这是偶然的。
有人理解我试图编码的逻辑吗?是否有一些 Web GUI,我可以编写 excel VBA 代码并查看突出显示的括号,以便在这些情况下获得更好的体验?谢谢
For i = LR To 2 Step -1
If (Left(CStr(cells(i, cA)), 4) = "6347" And (cells(i, cJ) <= 100 And cells(i, cJ) >= -100)) Or _
(Left(CStr(cells(i, cA)), 4) = "6349" And (cells(i, cJ) <= 100) And cells(i, cJ) >= -100) Or _
Left(CStr(cells(i, cC)), 4) = "Trs " Or _
Mid(CStr(cells(i, cC)), 15, 8) = "bcomf1t " Or _
Mid(CStr(cells(i, cC)), 15, 7) = "bcomtr " Then
【问题讨论】:
-
re: '...结合可怜的 2007 excel IDE 界面' 是可怜的工人责备他的工具。
-
将每个“或”语句拆分成自己的“如果”语句有助于理顺逻辑吗?
-
您的代码还会检查
cC列中的值是否为“Trs”或“bcomfit”或“bcomtr”以便继续。这不是你在叙述开始时所声明的。谁是对的? -
如果你声明了一些变量,你的工作会容易得多,这样你就可以从
If Then中删除所有这些CStr(Cells()) -
这可以简化为:
(cells(i, cJ) <= 100 And cells(i, cJ) >= -100))为:Abs(cells(i, cJ).Value <= 100)。但否则,我会根据上面的 sous2817 评论将您的Or语句分解为自己的If语句来解决问题。
标签: vba excel logical-operators