小编Pet*_*lor的帖子

如何使用Excel的UDF数组公式正确读取每个单元格?

天儿真好,

我有一个问题,更多的是帮助自己了解Excel的数组公式(Control + Shift + Enter)如何动态地将每个单元格读入公式.

我做了一个简化的例子来向你展示我的意思.

我创建了一个小型的虚构农场,有一些动物,按名字列出,并提供动物的声音.在下一篇专栏文章中,我创建了一个名为MakesSound的用户定义函数,它接受动物的输入并响应动物的声音.如下面的快照图所示.

在此输入图像描述

不幸的是,我认为arrayformula可以拿起我有不同的单元格列出动物,它结束就像这个快照.

在此输入图像描述

所以我怎么能要求arrayformula识别我在B列中有不同的细胞因为我知道Quacks不是其他动物的答案.:-)

这是另一个快照,显示了arrayformulas旁边的公式,用于比较和我使用的代码.

在此输入图像描述

Public Function MakesSound(AnimalName As String) As Variant
    Select Case AnimalName
        Case Is = "Duck"
            MakesSound = "Quack!"
        Case Is = "Cow"
            MakesSound = "Moo!"
        Case Is = "Bird"
            MakesSound = "Tweet!"
        Case Is = "Sheep"
            MakesSound = "Ba-Ba-Ba!"
        Case Is = "Dog"
            MakesSound = "Woof!"
        Case Else
            MakesSound = "Eh?"
    End Select
End Function
Run Code Online (Sandbox Code Playgroud)

我愿意接受建议.

谢谢,彼得.

excel vba excel-vba array-formulas

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

Excel VBA - const字符串范围或范围的定义名称之间的任何性能优势?

天儿真好,

我有一个问题,更多的是帮助我理解更多关于Excel VBA如何有效地管理已在一个地方声明的定义范围以便很好地执行数据.在更多关于这个项目的工作之前,只是想弄清楚哪两个选项(我知道到目前为止)是否是更好的最佳实践.

我正在解决的问题是在一组虚构的供应商中创建一个包含许多失败的小表,因此表格看起来像这样(抱歉它是原始形式)

"公司名称""失败的数量"
"冷却机器"7
"冷却剂宿舍"5
"小水冷却剂3
"空气移动系统"7
"将军冷却剂"5
"赞赏冷却剂"4

我的第一个选项(Const String)是这个模块/公式,如下所示.

Option Explicit
Public Const CountofFailures As String = "J7:J12"
Sub btnRandom()
    ' Declaration of variables
    Dim c As Range

    ' Provide a random number for failures across Suppliers
    For Each c In ActiveSheet.Range(CountofFailures)
        c.Value = Random1to10
    Next c
End Sub

Function Random1to10() As Integer
    'Ensure we have a different value each time we run this macro
    Randomize
    ' Provide a random number from 1 to 10 (Maximum …
Run Code Online (Sandbox Code Playgroud)

performance vba excel-vba defined named-ranges

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

VBA Excel打印数据到立即窗口关于范围数据以测试理解

我想做一系列小测试,帮助建立我的理解,因为我解决了以正确方式生成数据的小业务问题.

我的第一种方法是为自己证明我可以在VBE的立即窗口中打印(字符串数据类型)ID列表(使用.value方法),这样我就可以看到列表然后我可以构建另一个测试.

我的VBA代码目前显示了这一点,我将"CustTest"定义为A1中的命名范围:工作表1中的A100

Sub TestRanges()

Dim Custrng As Range

For Each Custrng In Range("CustTest")
    Print Custrng.Value
Next
End Sub
Run Code Online (Sandbox Code Playgroud)

我也想到了这个

Sub TestRanges()

Dim Custrng As Range

For Each Custrng In Range("CustTest")
    With Custrng
       Print  .Value
    End With
Next
End Sub
Run Code Online (Sandbox Code Playgroud)

这出现了一个错误,我不确定发生了什么,编译错误: - 没有合适的对象,方法无效.

有什么建议?

谢谢,彼得.

excel vba range excel-vba output

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