如果我运行以下代码
Sub Test_1()
Cells(1, 1).ClearContents
Cells(2, 1).Value = ""
End Sub
Run Code Online (Sandbox Code Playgroud)
当我使用公式检查单元格(1,1)和单元格(2,1)时,ISBLANK()
两个结果都返回TRUE.所以我想知道:
Cells( , ).Value = ""
和之间有什么区别Cells( , ).ClearContents
?
它们基本相同吗?
如果我然后运行以下代码来测试方法之间的时差:
Sub Test_2()
Dim i As Long, j As Long
Application.ScreenUpdating = False
For j = 1 To 10
T0 = Timer
Call Number_Generator
For i = 1 To 100000
If Cells(i, 1).Value / 3 = 1 Then
Cells(i, 2).ClearContents
'Cells(i, 2).Value = ""
End If
Next i
Cells(j, 5) = Round(Timer - …
Run Code Online (Sandbox Code Playgroud) 我们通常使用表达式:Cells(i, 1)
,, Cells(i, "A")
或Range("A" & i)
在VBA中引用动态单元格,但我发现以下奇怪的代码也有效:
Sub Test1()
For i = 1 To 10000
Range("A1")(i) = i
Next
End Sub
Run Code Online (Sandbox Code Playgroud)
我还发现使用方括号[]来表示单元格的快捷符号(是的,我知道表达EVALUATE命令的简写方法)也可以在这里使用,如下面的代码
Sub Test2()
For i = 1 To 10000
[A1].Resize(1000, 1)(i) = i
Next
End Sub
Run Code Online (Sandbox Code Playgroud)
要么
Sub Test3()
For i = 1 To 10000
[A1].Offset(i - 1) = i
Next
End Sub
Run Code Online (Sandbox Code Playgroud)
与流行的看法相反,方括号只能用快捷符号表示固定范围.我测试了所有这些,他们返回了相同的输出.
老实说,我从来没有想过这三个表达式都存在过,所以我猜它们可能是新的.这是真的吗?
我不仅找到了它们,还测试了它们以确定哪一个是最好的.最好的我的意思是他们使用计时测试的表现.我测试了这些陈述:
Cells(i, 1) = Rnd
Range("A" & i) = Rnd
Cells(i, "A") = Rnd …
我正在学习这门课程:在DataCamp和一个练习(性别之战)中介绍R,有一个这样的指令:
阅读编辑器中的代码,然后单击"提交答案"以测试是否
male
大于(>
)female
上面的指令激发了我在RStudio中测试以下代码:
'Male' > 'Female'
Run Code Online (Sandbox Code Playgroud)
令我惊讶的是,R给了我输出TRUE
!我也试过Excel和VBA,两者都想出了输出TRUE
!现在,我开始认为他们是用性别歧视观点编程的语言(开玩笑,呵呵......).
所以我想知道,这里到底发生了什么?有谁能在这里向我解释一下吗?TRUE
对于其他编程语言,这也适用吗?为什么?
我很想知道在双循环中执行一组指令的最快方法,以循环遍历二维范围的单元格.我的代码将是这样的:
Sub Test()
For i = 1 To 1000000
For j = 1 To 10 'It can be more than 10
'I put a set of instructions here
Next j
Next i
End Sub
Run Code Online (Sandbox Code Playgroud)
例如,假设我编写了一个简单的代码来实现以下任务:
Sub Test1()
T0 = Timer
For i = 1 To 1000000
For j = 1 To 10
Cells(i, j) = j + Rnd()
Next j
Next i
InputBox "The runtime of this program is ", "Runtime", Timer - T0
End Sub
Run Code Online (Sandbox Code Playgroud)
我在我的机器上运行了程序Test1,完成了179.6406秒.由于我没有声明变量(i和j),因此Test1 …
这个等式:a+(13*b/c)+d+(12*e)-f+(g*h/i)=87
当试图解决最近在互联网上传播的越南八岁儿童的数学难题时出现.在数学中,这样的方程称为欠定系统.当然它有多个解决方案,蛮力方法似乎是找到所有解决方案的最简单方法.
我有兴趣知道如何使用VBA解决方程并在MS Excel工作表中提供解决方案,因为由于缺乏VBA编程知识,我无法找到制作此类程序的方法.
我知道在堆栈溢出类似的职位像这样和这个,但答案有不帮我很多.
这是我的尝试:
Sub Vietnam_Problem()
Dim StartTime As Double
StartTime = Timer
j = 2 'initial value for number of rows
For a = 1 To 9
For b = 1 To 9
For c = 1 To 9
For d = 1 To 9
For e = 1 To 9
For f = 1 To 9
For g = 1 To 9
For h = 1 To …
Run Code Online (Sandbox Code Playgroud) 我想,以确定是否在两个日期之间的B柱秋季的日期(每月的第一天米年ñ和月份的最后一天,M-1年的N + 1)的几个周期.例如,9/20/2013(B列中的单元格值)介于:
7/1/2010 and 6/30/2011
7/1/2011 and 6/30/2012
7/1/2012 and 6/30/2013
7/1/2013 and 6/30/2014
7/1/2015 and 6/30/2016
Run Code Online (Sandbox Code Playgroud)
如果为True,则列C的同一行中的单元格值将包含日期结束的结束时段的年份(在本例中为2014),如果为False,则返回空白单元格.以下是我需要检查的B列中的数据集:
9/11/2013
8/20/2015
8/22/2013
8/31/2001
(Blank cell)
8/31/2009
AAA
9/3/2013
(Blank cell)
9/25/2011
9/30/2013
10/10/2012
Anna
10/4/2015
Run Code Online (Sandbox Code Playgroud)
首先,我使用以下代码进行了检查:
Sub CheckMyYear1_Click()
Dim i As Long, j As Long, Last_Row As Long, Period As Long
T0 = Timer
Last_Row = Cells(Rows.Count, "B").End(xlUp).Row
Period = 5
For j = 2 To Last_Row
For …
Run Code Online (Sandbox Code Playgroud) 如何使用单行代码在VBA Excel中格式化多个单元格范围的数字,对齐,字体,边框,填充,保护等?例如,我有以下代码
With Sheets("Sheet1")
.Columns("A").ColumnWidth = 15
.Columns("C").ColumnWidth = 15
.Columns("G").ColumnWidth = 15
.Range("A:C").Font.Color = vbRed
.Range("G:G").Font.Color = vbRed
End With
Run Code Online (Sandbox Code Playgroud)
我可以这样做(伪代码):
With Sheets("Sheet1")
.Columns("A", "C", "G").ColumnWidth = 15
.Range("A:C", "G:G").Font.Color = vbRed
End With
Run Code Online (Sandbox Code Playgroud)
我认为类似的东西.Columns(Array("A", "C", "G")).ColumnWidth = 15
会起作用,但是发生了错误.
excel ×8
excel-vba ×8
vba ×8
syntax ×2
arrays ×1
difference ×1
format ×1
optimization ×1
performance ×1
r ×1
reference ×1