在VBA函数中传递Excel范围,作为数组处理并返回结果

吉马兹

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

在此处输入图片说明

在此处输入图片说明

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

= Dent_WG(A1:A6)

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

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

结束功能

但是,即使在范围内出现“ Ag”的第二种情况下,该函数也始终返回0。我确定我无法正确地将范围转换为数组或无法将预期的逻辑应用于该数组。我的代码有什么问题?

悉达思·劳特

从你的问题...

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

这就是你所需要的。

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,""))

屏幕截图

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在VBA函数中传递多范围作为参数?

来自分类Dev

如何从Excel中的VBA函数返回数组?

来自分类Dev

Excel VBA函数返回结果

来自分类Dev

选定范围的Excel单元格传递给VBA函数的参数“作为变量”,然后传递给c ++中的ATL对象的方法

来自分类Dev

Excel VBA使用从函数返回的范围

来自分类Dev

从VBA中的函数返回数组

来自分类Dev

从VBA中的函数返回数组

来自分类Dev

将多维数组作为C中函数的指针传递会产生意外结果

来自分类Dev

将数组范围作为参数传递给函数?

来自分类Dev

在Excel中将非连续范围作为单个函数参数传递

来自分类Dev

在VHDL中,将无约束数组的索引范围作为参数传递给函数/过程时,默认范围是什么?

来自分类Dev

从函数Excel VBA返回多维数组

来自分类Dev

如何返回用户定义类型的数组,然后在VBA中作为参数传递

来自分类Dev

如何从返回数组的模型中获取ID并传递给控制器函数作为参数

来自分类Dev

在excel VBA中获取范围函数

来自分类Dev

Excel VBA:使用范围作为变量的评估匹配函数

来自分类Dev

数组在函数中作为参数传递并访问,那么为什么从函数返回后数组的值会被修改?

来自分类Dev

Excel:从工作表中调用vba函数时,将当前单元格作为参数传递

来自分类Dev

访问VBA在函数中传递多维数组

来自分类Dev

如何在Excel VBA函数中将日期作为参数传递

来自分类Dev

如何在Excel VBA函数中将日期作为参数传递

来自分类Dev

VBA评估函数和数组公式返回值的范围

来自分类Dev

从函数返回结果数组

来自分类Dev

Excel VBA将数组数组传递给函数

来自分类Dev

如何将数组返回到Excel VBA范围

来自分类Dev

VBA使用作为函数返回值的数组

来自分类Dev

如何在文本框中输入值并将其作为参数传递给函数以给出返回结果

来自分类Dev

处理返回数组的函数

来自分类Dev

是否可以在VBA函数中返回数组?

Related 相关文章

  1. 1

    如何在VBA函数中传递多范围作为参数?

  2. 2

    如何从Excel中的VBA函数返回数组?

  3. 3

    Excel VBA函数返回结果

  4. 4

    选定范围的Excel单元格传递给VBA函数的参数“作为变量”,然后传递给c ++中的ATL对象的方法

  5. 5

    Excel VBA使用从函数返回的范围

  6. 6

    从VBA中的函数返回数组

  7. 7

    从VBA中的函数返回数组

  8. 8

    将多维数组作为C中函数的指针传递会产生意外结果

  9. 9

    将数组范围作为参数传递给函数?

  10. 10

    在Excel中将非连续范围作为单个函数参数传递

  11. 11

    在VHDL中,将无约束数组的索引范围作为参数传递给函数/过程时,默认范围是什么?

  12. 12

    从函数Excel VBA返回多维数组

  13. 13

    如何返回用户定义类型的数组,然后在VBA中作为参数传递

  14. 14

    如何从返回数组的模型中获取ID并传递给控制器函数作为参数

  15. 15

    在excel VBA中获取范围函数

  16. 16

    Excel VBA:使用范围作为变量的评估匹配函数

  17. 17

    数组在函数中作为参数传递并访问,那么为什么从函数返回后数组的值会被修改?

  18. 18

    Excel:从工作表中调用vba函数时,将当前单元格作为参数传递

  19. 19

    访问VBA在函数中传递多维数组

  20. 20

    如何在Excel VBA函数中将日期作为参数传递

  21. 21

    如何在Excel VBA函数中将日期作为参数传递

  22. 22

    VBA评估函数和数组公式返回值的范围

  23. 23

    从函数返回结果数组

  24. 24

    Excel VBA将数组数组传递给函数

  25. 25

    如何将数组返回到Excel VBA范围

  26. 26

    VBA使用作为函数返回值的数组

  27. 27

    如何在文本框中输入值并将其作为参数传递给函数以给出返回结果

  28. 28

    处理返回数组的函数

  29. 29

    是否可以在VBA函数中返回数组?

热门标签

归档