小编Ana*_*a 秀的帖子

.Value =""和.ClearContents有什么区别?

如果我运行以下代码

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)

syntax excel vba excel-vba difference

11
推荐指数
1
解决办法
1187
查看次数

这些新颖的方式[可能是最好的方式吗?]在VBA中引用动态单元?

我们通常使用表达式: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)

与流行的看法相反,方括号只能用快捷符号表示固定范围.我测试了所有这些,他们返回了相同的输出.

老实说,我从来没有想过这三个表达式都存在过,所以我猜它们可能是新的.这是真的吗?


我不仅找到了它们,还测试了它们以确定哪一个是最好的.最好的我的意思是他们使用计时测试的表现.我测试了这些陈述:

  1. Cells(i, 1) = Rnd
  2. Range("A" & i) = Rnd
  3. Cells(i, "A") = Rnd …

excel vba reference excel-vba

8
推荐指数
1
解决办法
154
查看次数

为什么在R,Excel和VBA中男性>女性等于TRUE?用其他语言怎么样?

我正在学习这门课程:在DataCamp和一个练习(性别之战)中介绍R,有一个这样的指令:

阅读编辑器中的代码,然后单击"提交答案"以测试是否male 大于(>)female

上面的指令激发了我在RStudio中测试以下代码:

'Male' > 'Female'
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是,R给了我输出TRUE!我也试过Excel和VBA,两者都想出了输出TRUE!现在,我开始认为他们是用性别歧视观点编程的语言(开玩笑,呵呵......).

在此输入图像描述

所以我想知道,这里到底发生了什么?有谁能在这里向我解释一下吗?TRUE对于其他编程语言,这也适用吗?为什么?

excel vba r excel-vba

6
推荐指数
2
解决办法
1330
查看次数

在VBA Excel中优化双循环的性能

我很想知道在双循环中执行一组指令的最快方法,以循环遍历二维范围的单元格.我的代码将是这样的:

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 …

excel optimization performance vba excel-vba

4
推荐指数
1
解决办法
2298
查看次数

使用VBA解决具有九个未知变量的方程的强力方法

这个等式: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)

excel vba excel-vba

3
推荐指数
1
解决办法
1790
查看次数

处理数组中的数据时发生错误

我想,以确定是否在两个日期之间的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)

arrays excel vba excel-vba

2
推荐指数
1
解决办法
48
查看次数

使用单行代码在VBA Excel中格式化多个范围

如何使用单行代码在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会起作用,但是发生了错误.

format syntax excel vba excel-vba

1
推荐指数
1
解决办法
3033
查看次数

如何在VBA Excel中使用我定义的范围名称?

我在Excel的名称管理器中有一些已定义的名称.例如,像这样:

例如:

我想在我的VBA代码中使用它们,但我不知道如何.这里有人能帮助我吗?

excel vba excel-vba

1
推荐指数
1
解决办法
94
查看次数