首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在VBA函数中传递Excel范围,进程作为数组,并返回结果

在VBA函数中传递Excel范围,进程作为数组,并返回结果
EN

Stack Overflow用户
提问于 2014-02-09 10:49:51
回答 3查看 1.9K关注 0票数 1

我有一个Excel工作表,列中有一些字符串。有时所有条目都是相同的,有时不是:

我编写了一个函数,将范围作为参数传递:

代码语言:javascript
运行
AI代码解释
复制
=Dent_WG(A1:A6)

VBA函数应确定哪种情况为真(所有条目= "Al",或至少一个条目= "Ag"),然后分别返回0或12:

代码语言:javascript
运行
AI代码解释
复制
Function DentWG(WG_Mat As Range) As Single

    Dim dat As Variant, rw As Variant, temp As Single
    dat = WG_Mat
    temp = 0
    
    For rw = LBound(dat, 1) To UBound(dat, 1)
        If dat(rw, 1) = "Ag" Then
            temp = 12
        End If
    Next

    If temp = 12 Then
        DentWG = 12
    Else
        DentWG = 0
    End If

End Function

但是,函数总是返回0,即使在第二种情况下,"Ag“出现在范围内。我确信我未能正确地将范围转换为数组,或者将预期的逻辑正确地应用于该数组。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-09 11:37:30

从你的问题..。

VBA函数应确定哪种情况为真(所有条目= "Al",或至少一个条目= "Ag"),然后分别返回0或12:

这就是你所需要的。

代码语言:javascript
运行
AI代码解释
复制
Function DentWG(WG_Mat As Range) As Long 
    Dim ClCount As Long

    ClCount = WG_Mat.Cells.Count

    If Application.WorksheetFunction.CountIf(WG_Mat, "Al") = ClCount Then
        DentWG = 0
    ElseIf Application.WorksheetFunction.CountIf(WG_Mat, "Ag") > 0 Then
        DentWG = 12
    End If
End Function

同样的方法可以用一个公式来实现。

=IF(COUNTIF(A1:A6,"Al")=(ROWS(A1:A6)*COLUMNS(A1:A6)),0,IF(COUNTIF(A1:A6,"Ag") > 0‌​,12,""))

如果总是1列,那么就不需要*COLUMNS(A1:A6)了。这样就行了。

=IF(COUNTIF(A1:A6,"Al")=ROWS(A1:A6),0,IF(COUNTIF(A1:A6,"Ag") > 0,12,""))

ScreenShot

票数 2
EN

Stack Overflow用户

发布于 2014-02-09 11:03:01

这对我来说很管用:

代码语言:javascript
运行
AI代码解释
复制
Function DentWG(WG_Mat As Range) As Single
    Dim result As Single, cl as Range
    result = 0

    For Each cl In WG_Mat
        If cl = "Ag" Then
            DentWG = 12
            Exit Function
        End If
    Next cl

    DentWG = result
End Function
票数 2
EN

Stack Overflow用户

发布于 2014-02-09 11:18:05

你并不需要一个UDF来完成这个任务。你可以说:

=IF(COUNTIF(A1:A6,"Ag")>=1,12,0)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21663348

复制
相关文章
VBA数组的排序_vba函数返回值 数组
我们平时用的表格排序,只相对来说是在在表格中的升序降序。今天就好奇如果数组中实现排序 他是怎么实现的呢。
全栈程序员站长
2022/11/15
3.5K0
VBA数组的排序_vba函数返回值 数组
【VBA】在excel中检索文本
虽然在excel文件中检索的vba代码不知道写了多少遍了,每次需要的时候,都是从网上找,然后写。实在是低效的做法。从网上找了一段代码,放在此处,以后需要的时候可以随手拿来。
东风压倒西风
2022/09/06
2.8K0
java 查看进程状态_java执行shell命令并返回结果
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/172503.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/22
8820
java 查看进程状态_java执行shell命令并返回结果
VBA 在 Excel 中的常用操作
设置单元格 Value 里使用 Chr(10) 和 Chr(13),分别表示回车、换行。
零式的天空
2022/03/24
3.3K0
VBA 在 Excel 中的常用操作
设置单元格 Value 里使用 Chr(10) 和 Chr(13),分别表示回车、换行。
mzlogin
2020/04/16
3.8K0
VBA数组(四)数组函数
VBA中操作数组的函数主要有以下几个,LBound函数和UBound函数、Array函数、IsArray函数、Erase函数、Split函数、Join函数,后面分两节介绍数组函数。
无言之月
2019/10/13
5.5K0
Python 函数作为参数传递
#map()的功能是将函数对象依次作用于表的每一个元素,每次作用的结果储存于返回的表re中。 #map通过读入的函数(这里是lambda函数)来操作数据 def test_func_map():     re = map((lambda x: x+3), [1, 2, 3, 4])     print re def testA(a, b, **kargs):     print a+b     print "testA: %s" % kargs #函数作为参数传递 def test_func(func, a, b, **kargs):     func(a, b)     print "test_func: %s" % kargs #函数作为参数传递 def test_func_lambda(func, **kargs):     func()     print "test_func_lambda: %s" % kargs def test_func_getattr():     func = getattr(obj, "testA")     func(1, 2) class TestGetattr():     aa = "2a"     def get_attr(self):         print "test getattr()"     def print_text(self):         print "print text"     def print_string(self):         print "print string" #getattr(obj, "a")的作用和obj.a是一致的,但该方法还有其他的用处,最方便的就是用来实现工厂方法 #根据传入参数不同,调用不同的函数实现几种格式的输出 def output(print_type="text"):     tg = TestGetattr()     output_func = getattr(tg, "print_%s" % print_type)     output_func() if __name__ == "__main__":     #test_func(testA, 1, 2, aa="aa")     #test_func_lambda((lambda: testA(1, 2, bb="bb")), cc="cc")     #test_func_map()     #test_func_getattr()     #getattr方法,传入参数是对象和该对象的函数或者属性的名字,返回对象的函数或者属性实例     obj = TestGetattr()     func = getattr(obj, "get_attr") #getattr()获得对象的属性和方法     func()     print getattr(obj, "aa") #完成对象的反射     print obj.aa     #callable方法,如果传入的参数是可以调用的函数,则返回true,否则返回false。     print callable(getattr(obj, "aa"))     output("string")
py3study
2020/01/09
3K0
结构体数组在函数之间传递数据
明的数组,进行函数调用时,实参将数组名中存放的数组首地址传递给形参数组名。这样,实参数组名和形参名代表的是同一个结构体数组,因此在被调函数中对数组元素结构体变量的值进行修改后,回到主调函数通过实参数组名访问数组时,可以发现这个改变。
pigeon
2022/04/11
1.9K0
结构体数组在函数之间传递数据
【Python】函数进阶 ③ ( 函数作为参数传递 )
之前介绍的函数 , 都是 接收具体的 变量 或 字面量 数据 作为参数 , 如 : 数字 / 布尔值 / 字典 / 列表 / 元组 等 ;
韩曙亮
2023/10/11
4810
【Python】函数进阶 ③ ( 函数作为参数传递 )
Jupyter Notebooks嵌入Excel并使用Python替代VBA宏
以前,Excel和Python Jupyter Notebook之间我们只能选择一个。但是现在随着PyXLL-Jupyter软件包的推出,可以将两者一起使用。
deephub
2020/12/28
6.4K0
Jupyter Notebooks嵌入Excel并使用Python替代VBA宏
VBA数组(五)数组函数2
大家好,上节介绍了VBA数组中的LBound和UBound等函数,本节介绍剩余的数组函数,Erase函数、Split函数和Join函数。
无言之月
2019/10/13
3.1K0
Excel VBA解读(155): 数据结构—数组相关的函数
Array函数可以使用一组数据来填充数组。然而,必须将数组变量声明为Variant型。例如代码:
fanjy
2019/08/06
1.5K0
在VBA中对数组排序的代码
这是一段非常好的代码,来自ozgrid.com,可以使用它来快速排序VBA中的数组。
fanjy
2023/09/21
9640
在VBA中对数组排序的代码
Go-函数作为参数传递
编码过程中业务需要将一个函数,作为参数传递到函数内部。Go 语言的匿名函数是一个闭包(Closure)
王小明_HIT
2023/03/01
1.7K0
Go-函数作为参数传递
如何在C中传递二维数组作为参数?
在C语言中,有很多方法可以将2d数组作为参数传递。在下面的部分中,我描述了将2d数组作为参数传递给函数的几种方法。
用户4645519
2020/09/08
3.2K0
VBA Object对象的函数参数传递
VBA的函数参数传递方式是Byval和Byref,数值类型、Stirng等那些值类型的是要非常注意用哪种方式的。对于Object对象引用类型的一直都说2种方式完全没有区别。
xyj
2020/07/28
3.6K0
『Excel进化岛精华曝光』 在VBA中调用OFFICE365新函数
VBA虽然整体语言上的更新是停滞的,但在OFFICE对象接口上,还是会有所更新。例如Excel里的新增的函数,在Application.WorksheetFunction类下面会有所更新,但不是全都有,也不知道未来会补充多少。
Excel催化剂
2023/04/26
1.7K0
『Excel进化岛精华曝光』 在VBA中调用OFFICE365新函数
函数(四)(数组作为函数参数)
一是数组元素作为函数参数,这种情况下与简单变量作为函数的参数完全一样,数组元素的值被单向传递给形参变量。
pigeon
2022/04/11
1.5K0
函数(四)(数组作为函数参数)
C++返回vector/将vector作为参数传递
在C++里很多时候我们会遇到函数想返回两个以上结果的情况,这时候可以用数组(vector)、类来作为容器返回,也可以声明一个全局变量的数组,将数值存放在数组里解决。
vincentbbli
2021/08/18
5.5K0
点击加载更多

相似问题

VBA将参数作为变量传递给函数并返回范围

10

Excel VBA函数:如何传递范围、转换为数组、反转和返回数组

30

vba函数,它以范围参数作为输入,并返回范围。

55

Excel VBA:将计算结果数组作为参数传递给函数

11

Excel VBA:将范围名称作为函数参数传递

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文