这是一段看似非常特殊的C++代码.出于某种奇怪的原因,奇迹般地对数据进行排序使得代码几乎快了六倍.
#include <algorithm>
#include <ctime>
#include <iostream>
int main()
{
// Generate data
const unsigned arraySize = 32768;
int data[arraySize];
for (unsigned c = 0; c < arraySize; ++c)
data[c] = std::rand() % 256;
// !!! With this, the next loop runs faster.
std::sort(data, data + arraySize);
// Test
clock_t start = clock();
long long sum = 0;
for (unsigned i = 0; i < 100000; ++i)
{
// Primary loop
for (unsigned c = 0; c < arraySize; ++c) …Run Code Online (Sandbox Code Playgroud) 我正在尝试通过执行以下操作在Excel宏中使用"和"进行惰性评估:
If Not myObject Is Nothing *And* myObject.test() Then
'do something'
Else
'do something else'
End If
Run Code Online (Sandbox Code Playgroud)
我知道在VB.NET中存在懒惰的评估AndAlso,OrElse但在VBA中找不到类似的东西.如果VBA中不存在惰性求值,那么构造代码的最佳方法是什么,以便评估我期望的方式?
我只是想知道Or条件语句如何在VBA/VB6中工作.基本上,如果我们有If A Or B Then,布尔表达式的评估顺序是什么?如果A为真,B还会被评估吗?
我有一个简短的问题.VBA之间有什么不同吗?
if x1 and x2 and x3 and ... and x10 then
foo
end if
Run Code Online (Sandbox Code Playgroud)
和
if x1 then
if x2 then
if x3 then
...
foo
end if
end if
end if
Run Code Online (Sandbox Code Playgroud)
关于速度?
更具体地说:我有10列数据,需要逐行比较数据库中的重复数据(SELECT DISTINCT之类的东西在这种情况下不起作用).
我可以想象,那是用的
x1 = recordset.fields("Field1").value
if x1 then
x2 = recordset.fields("Field2").value
if x2 then
x3 = recordset.fields("Field3").value
if x3 then
...
foo
end if
end if
end if
Run Code Online (Sandbox Code Playgroud)
会快于
x1 = recordset.fields("Field1").value
x2 = recordset.fields("Field2").value
...
if x1 and x2 and x3 and ... and …Run Code Online (Sandbox Code Playgroud) 在VBA中,以下哪个if语句表现更好?
上下文:我正在迭代查找条目的工作表.
if [condition1] and [condition2] and [condition3] then
*do something*
end if
Run Code Online (Sandbox Code Playgroud)
要么
if [condition1] then
if [condition2] then
if [condition3] then
*do something*
end if
end if
end if
Run Code Online (Sandbox Code Playgroud)
我的直觉说第二个语句,因为它只需要在进行下一次迭代之前检查一个初始条件,但是这样吗?还有,有更好的方法吗?
我在使If NOT Like代码工作时遇到了一些问题.
下面是编码的一部分.似乎编码正在带来第二个记录,在该字段中有铁路,但没有一个记录在那之前或之后有铁路.
实际上,它应该在该领域的任何地方带来不包含铁路的记录,但它也不会这样做.任何反馈都表示赞赏.
Set rngData = Intersect(wsData.UsedRange, wsData.Range("A:K"))
j = 1
rngData.Rows(1).Copy Destination:=wsGalreq.Cells(j, 1)
For i = 2 To rngData.Rows.Count
If Not rngData.Cells(i, 11).Value = "SUPPLIER A" And rngData.Cells(i, 6).Value Like "*RAIL*" Then
j = j + 1
rngData.Rows(i).Copy Destination:=wsGalreq.Cells(j, 1)
End If
Next
Run Code Online (Sandbox Code Playgroud) 我有以下代码VBA来评估变量lngPNumber以将"正确"值发送到WorksheetFunction.vLookup函数:
Dim lngPNumber As Variant
lngPNumber = ActiveSheet.Cells(objInitialCell.Row, INT_ACCP_COL_PNUMBER).Value
If IsNumeric(lngPNumber) = False Or CDbl(lngPNumber) <> Round(CDbl(lngPNumber)) Then
lngPNumber = CStr(ActiveSheet.Cells(objInitialCell.Row, INT_ACCP_COL_PNUMBER).Text)
End If
Run Code Online (Sandbox Code Playgroud)
lngPNumber可:
在最后两种情况下,我想发送单元格文本而不是单元格值lngPNumber获取的位置.
但是,如果值是类似于列表中最后一个示例的字符串,则会出现Type Missmatch错误.有帮助吗?
vba ×6
excel ×4
excel-vba ×4
if-statement ×2
c++ ×1
flow-control ×1
java ×1
ms-access ×1
optimization ×1
performance ×1
vb.net ×1