VBA 分割求平均值

Function StrToArr(str As String, delimiter As String) As Variant

Dim ar, nar()
If (Trim(str) = "") Then
    ReDim nar(0)
    StrToArr = nar
    GoTo EndR
End If

ar = Split(str, delimiter)

ReDim nar(UBound(ar))
For i = LBound(ar) To UBound(ar)
    nar(i) = CDbl(ar(i))

Next
EndR:
StrToArr = nar ' Application.Average(nar) ' nar

End Function
Function ArrAVG(arr1 As Variant, arr2 As Variant, arr3 As Variant, arr4 As Variant) As Double

Dim Narr, AArr(3)
Dim index, count As Integer
count = UBound(arr1) + UBound(arr2) + UBound(arr3) + UBound(arr4) + 4

ReDim Narr(count)
AArr(0) = arr1
AArr(1) = arr2
AArr(2) = arr3
AArr(3) = arr4
index = 0

For i = 0 To 3
    For j = LBound(AArr(i)) To UBound(AArr(i))
        If (CDbl(AArr(i)(j)) <> 0) Then
            Narr(index) = CDbl(AArr(i)(j))
            index = index + 1
        End If
    Next

Next


ArrAVG = Application.Average(Narr)
End Function
Function Get4AVG(s1 As String, s2 As String, s3 As String, s4 As String) As Double
Debug.Print s1


Dim d As String
d = "/"
Get4AVG = ArrAVG(StrToArr(s1, d), StrToArr(s2, d), StrToArr(s3, d), StrToArr(s4, d))


End Function


Sub test()
c = StrToArr("4.10/3.87/3.74", "/")
'Debug.Print c
d = Get4AVG("4.10/3.87/3.74", "4.08/3.88/3.78", "", "4.09/3.90/3.79")
Debug.Print d

End Sub
<think> 我们正在为用户提供关于VBA函数大全的信息。根据引用资料,我们可以整理出VBA函数的多个类别,包括内置函数(如字符串处理、日期时间、数学函数等)以及自定义函数。引用中提到了VLOOKUP、MID、AVERAGE、CONCATENATE、DATE、FORMAT、LEN、EXACT等具体函数,也提到了文件操作相关函数(如FreeFile)以及错误处理等。由于VBA函数非常丰富,我们无法列出所有函数,但可以按照类别提供主要函数列表,并给出一些示例。 注意:用户要的是“完整列表和相关信息”,但实际中完整列表非常长,通常我们会按照类别列出常用函数,并建议用户查阅官方文档获取完整列表。同时,我们可以提供获取完整列表的方法(如使用对象浏览器)。 因此,我们的回答结构: 1. 介绍VBA函数的主要类别。 2. 列举每个类别中的常用函数(尽可能多,但非全部)。 3. 提供如何查找完整列表的方法(对象浏览器、帮助文档等)。 4. 给出几个常用函数的示例代码。 5. 生成相关问题。 注意:引用资料中提到的函数要尽可能包含在内。 由于引用[1]和[2]提到了VBA常用函数,引用[3]提供了Excel VBA函数使用大全(包含VLOOKUP、MID等),引用[4]提到了文件操作函数(如FreeFile),我们将整合这些信息。 注意:VBA函数包括VBA语言内置函数和Excel对象模型中的函数(如工作簿函数)。这里我们主要关注VBA内置函数,但也会提到一些常用的Excel工作表函数在VBA中的调用(如Application.WorksheetFunction.VLookup)。 步骤: 1. VBA内置函数分类列举 2. 如何获取完整列表 3. 常用函数示例 4. 自定义函数 5. 相关问题 由于用户要完整列表,我们可以建议用户使用对象浏览器(按F2)查看VBA库中的所有函数。但在这里,我们会列出大部分常用函数。 </think> 以下是关于VBA函数的完整指南,整合了引用内容和核心知识点: ### 📚 VBA函数分类大全 1. **字符串处理函数** - `Instr()`:查找子串位置 `pos = Instr(1, "Hello", "e") ' 返回2` - `Split()`:分割字符串 `arr = Split("A,B,C", ",")` - `Mid()`:提取子串 `Mid("Excel", 2, 3) ' 返回"xce"` [^3] - `Len()`:获取长度 `Len("VBA") ' 返回3` [^3] - `Format()`:格式化字符串 `Format(1234.5, "¥#,##0.00") ' 返回"¥1,234.50"` [^3] 2. **数学与统计函数** - `Avg()`:平均值计算 - `Count()`:计数函数 - `Round()`:四舍五入 - `Sqr()`:平方根计算 3. **文件操作函数** - `FreeFile()`:获取可用文件号 `FileNo = FreeFile()` [^4] - `Open`:打开文件(需配合文件号使用) - `Input`/`Output`:文件读写 4. **逻辑与校验函数** - `Exact()`:精确比较字符串 `Exact("AB","ab") ' 返回False` [^3] - `IsNumeric()`:检测数值类型 - `IsError()`:错误值判断 5. **Excel特有函数(通过Application调用)** ```vba Application.WorksheetFunction.VLookup(lookup_value, table_array, col_index, [range_lookup]) Application.WorksheetFunction.CountA(Range("A1:A10")) ``` 6. **日期函数** - `Date()`:当前日期 - `DateAdd()`:日期加减 - `DateDiff()`:日期差值 ### 🛠️ 获取完整函数列表的方法 1. **对象浏览器查看** 在VBE编辑器中按`F2`,搜索`VBA`库,可查看所有内置函数: ```vb ' 示例:查看MsgBox参数列表 MsgBox "提示内容", vbInformation, "标题" ``` 2. **官方文档参考** - [Microsoft VBA函数文档](https://learn.microsoft.com/en-us/office/vba/api/overview/) - 按`F1`查看函数上下文帮助 3. **自定义函数扩展** ```vba Function 折扣价(原价 As Double, 折扣 As Single) 折扣价 = 原价 * (1 - 折扣) End Function ' 调用:折扣价(100, 0.2) ``` ### ⚠️ 注意事项 1. 处理`#N/A`错误: ```vba If IsError(Application.Match(查找值, 区域, 0)) Then MsgBox "值不存在" End If ``` 2. 超长文本处理: VLOOKUP超过255字符时改用`Find`方法[^3] 3. 文件操作规范: ```vba Open "C:\test.txt" For Input As #1 Line Input #1, text Close #1 ' 必须关闭文件 ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值