原创—EXCEL VBA SPC自定义函数包括CPK PPK CP……
excel自定义函数 VBA

excel自定义函数一、问题提出excel使用非常方便,举例:通常我们在计算一组数据的平均值时,我们可以在单元格中输入"=average(A1:B4)"(假设数据在单元格"A1:B4"中),或者计算一组数据的和,我们可以在单元格中输入"=sum(A1:B4)"(同样假设数据在单元格"A1:B4"中)。
但是,如果我们要计算的公式太长,或者没有这个公式,我们应该怎么办?比如,计算一组数据的相对标准偏差RSD,我们可以输入"=stdev(A1:B4)/average(A1:B4)",但是,如果我们希望可以和其它内置函数一样,通过输入"=rsd(A1:B4)"来计算,那么该如何做?甚至,我们希望可以这样输入”=rsd(12,56,a1:a6)”这样类似的公式,应该如何做?二、vba代码通过VBA自定义函数来解决上面的问题,代码如下:1.Function RSD(ParamArray X())2.Dim J As Integer, mArr(), K As Integer, Rng As Range3.K = 04.For J = 0 To UBound(X)5.If TypeName(X(J)) = "Range" Then6.For Each Rng In X(J)7.ReDim Preserve mArr(K)8.mArr(K) = Rng.Value9.K = K + 110.Next11.Else12.ReDim Preserve mArr(K)13.mArr(K) = X(J)14.K = K + 115.End If16.Next17.With Application.WorksheetFunction18.RSD = .StDev(mArr) / .Average(mArr)19.End With20.Erase mArr21.End Function三、代码说明1、Function RSD(ParamArray X()) :ParamArray关键字允许提供任意数目的参数。
Excel高级技巧使用VBA编写自定义函数

Excel高级技巧使用VBA编写自定义函数Excel是一款功能强大的电子表格软件,通过使用VBA(Visual Basic for Applications)编写自定义函数,可以进一步拓展Excel的功能和灵活性。
本文将介绍一些Excel高级技巧,以及如何使用VBA编写自定义函数来实现更复杂的计算和数据处理需求。
一、VBA简介VBA是一种基于Visual Basic语言的宏编程语言,用于扩展Microsoft Office套件中的各种应用程序的功能,包括Excel。
通过使用VBA,我们可以编写自己的功能代码,以实现定制化的功能。
二、使用VBA编写自定义函数的步骤1. 打开Excel,并按下ALT + F11快捷键,打开Visual Basic编辑器界面。
2. 在VBA编辑器界面中,选择插入(Insert)菜单,然后选择模块(Module)。
3. 在新建的模块中,编写自定义函数的VBA代码,例如:```vbaFunction MyFunction(ByVal num1 As Double, ByVal num2 As Double) As DoubleMyFunction = num1 * num2End Function```上述代码定义了一个名为MyFunction的自定义函数,接受两个参数num1和num2,并返回它们的乘积。
4. 保存VBA代码,并返回Excel界面。
5. 在Excel表格中的某个单元格中输入`=MyFunction(2, 3)`,按下回车键,该单元格将显示结果6,即2和3的乘积。
通过以上步骤,我们成功地使用VBA编写了一个自定义函数,并在Excel中调用并使用它。
三、自定义函数的应用示例自定义函数可以用于更复杂的计算和数据处理需求。
以下是一个实际示例,展示了如何使用VBA编写自定义函数。
假设我们有一个Excel表格,其中包含了学生的成绩信息,包括科目和分数。
我们想计算每个科目的平均分。
VBAExcel常用自定义函数

VBAExcel常用自定义函数1. 将互换 Excel 列号(数字/字母)Public Function excelColumn_numLetter_interchange(numOrLetter) As String Dim i, j, idx As IntegerDim letterArrayletterArray = Array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z')If IsNumeric(numOrLetter) ThenIf numOrLetter > 702 ThenMsgBox '只允许输入小于“703”的数字。
'Exit FunctionEnd IfIf numOrLetter > 26 Thenidx = 26For i = 0 To 25For j = 0 To 25idx = idx + 1If idx = numOrLetter ThenexcelColumn_numLetter_interchange = letterArray(i) & letterArray(j)Exit ForEnd IfNext jNext iElseexcelColumn_numLetter_interchange = letterArray(numOrLetter - 1)End IfElsenumOrLetter = UCase(numOrLetter) '转换为大写If Len(numOrLetter) > 1 And Len(numOrLetter) < 3 Thenidx = 26For i = 0 To 25For j = 0 To 25idx = idx + 1If letterArray(i) & letterArray(j) = numOrLetter ThenexcelColumn_numLetter_interchange = idxExit ForEnd IfNext jNext iElseIf Len(numOrLetter) = 1 ThenFor i = 0 To 25If letterArray(i) = numOrLetter ThenexcelColumn_numLetter_interchange = i + 1Exit ForEnd IfNext iElseMsgBox '最多只允许输入2个“字母”。
CPK、PPK及SPC的应用

CPK、PPK及SPC的应用CPK:Complex Process Capability index 的缩写,是现代企业用于表示制成能力的指标。
CPK值越大表示品质越佳。
CPK=min((X-LSL/3s),(USL-X/3s))Cpk——过程能力指数CPK= Min[ (USL- Mu)/3s, (Mu - LSL)/3s]Cpk应用讲议1. Cpk的中文定义为:制程能力指数,是某个工程或制程水准的量化反应,也是工程评估的一类指标。
2. 同Cpk息息相关的两个参数:Ca , Cp.Ca: 制程准确度。
Cp: 制程精密度。
3. Cpk, Ca, Cp三者的关系:Cpk = Cp * ( 1 - |Ca|),Cpk是Ca及Cp两者的中和反应,Ca反应的是位置关系(集中趋势),Cp反应的是散布关系(离散趋势)4. 当选择制程站别用Cpk来作管控时,应以成本做考量的首要因素,还有是其品质特性对后制程的影响度。
5. 计算取样数据至少应有20~25组数据,方具有一定代表性。
6. 计算Cpk除收集取样数据外,还应知晓该品质特性的规格上下限(USL,LSL),才可顺利计算其值。
7. 首先可用Excel的“STDEV”函数自动计算所取样数据的标准差(σ),再计算出规格公差(T),及规格中心值(u). 规格公差=规格上限-规格下限;规格中心值=(规格上限+规格下限)/2;8. 依据公式:,计算出制程准确度:Ca值9. 依据公式:Cp = ,计算出制程精密度:Cp值10. 依据公式:Cpk=Cp ,计算出制程能力指数:Cpk值11. Cpk的评级标准:(可据此标准对计算出之制程能力指数做相应对策)A++级Cpk≥2.0 特优可考虑成本的降低A+ 级2.0 >Cpk ≥ 1.67 优应当保持之A 级1.67 >Cpk ≥ 1.33 良能力良好,状态稳定,但应尽力提升为A+级B 级1.33 >Cpk ≥ 1.0 一般状态一般,制程因素稍有变异即有产生不良的危险,应利用各种资源及方法将其提升为A级C 级1.0 >Cpk ≥ 0.67 差制程不良较多,必须提升其能力D 级0.67 >Cpk 不可接受其能力太差,应考虑重新整改设计制程。
SPC所有公式详细解释及分析

SPC所有公式详细解释及分析SPC(统计过程控制)是一种用于监控和控制过程变异的统计方法。
在SPC中,有许多公式用于计算统计量和确定控制界限,以帮助检测异常和评估过程的稳定性。
本文将详细解释和分析一些常见的SPC公式。
1. 平均值(Mean):平均值是样本数据的算术平均值。
计算平均值的公式是将所有观测值相加,然后除以观测值的个数。
平均值可以用来了解过程的中心位置。
2. 范围(Range):范围表示样本数据的最大值和最小值之间的差异。
计算范围的公式是将样本数据的最大值减去最小值。
范围主要用于检测过程变异的大小。
3. 方差(Variance):方差用于测量样本数据的离散程度。
计算方差的公式是将每个观测值与平均值的差异平方后相加,并除以观测值的个数减1、方差越大,表示过程的波动性越大。
4. 标准差(Standard Deviation):标准差是方差的平方根,用于衡量过程数据的离散程度。
标准差可以用来判断过程的稳定性和控制界限的设定。
标准差越大,表示过程的变异性越大。
5. 控制图界限(Control Limits):控制图界限是用来判断过程是否处于统计控制的范围内。
常用的控制图包括X-bar图和R图。
在X-bar图中,控制界限由平均值加减3倍标准差计算得到。
在R图中,控制界限由平均范围的加减2.66倍平均范围的标准差计算得到。
如果一个点超出了控制界限,则表示该点可能是异常值或过程发生了变化。
6. 过程能力指数(Process Capability Index):过程能力指数用来衡量过程在规格限制内产生产品的能力。
常用的过程能力指数包括Cp、Cpk、Pp和Ppk。
Cp和Pp表示过程的潜在能力,只考虑过程的平均值和规格限制的距离;Cpk和Ppk表示过程的实际能力,同时考虑过程的变异性。
7. 规格上限与规格下限(Specification Limits):规格上限和规格下限是产品或过程的设计要求。
当产品或过程的测量值超出规格限制时,表示产品或过程不符合设计要求,可能需要调整或改进。
excel中161个VBA_自定义函数(超级实用)

VBA自定义函数大全目录'1.函数作用:返回 Column 英文字 (9)'2.函数作用:查询某一值第num次出现的值 (9)'3.函数作用:返回当个人工资薪金所得为2000元(起征点为850元)时的应纳个人所得税税额 (10)'4.函数作用:从形如"123545ABCDE"的字符串中取出数字 (11)'5.函数作用:从形如"ABCD12455EDF"的字符串中取出数字 (11)'6.函数作用:按SplitType取得RangeName串值中的起始位置12 '7.函数作用:将金额数字转成中文大写 (13)'8.函数作用:计算某种税金 (18)'9.函数作用:人民币大、小写转换 (19)'10.函数作用:查汉字区位码 (20)'11.函数作用:把公元年转为农历 (21)'12.函数作用:返回指定列数的列标 (42)'13.函数作用:用指定字符替换某字符 (43)'14.函数作用:从右边开始查找指定字符在字符串中的位置 (43)'15.函数作用:从右边开始查找指定字符在字符串中的位置 (44)'16.函数作用:计算工龄 (44)'17.函数作用:计算日期差,除去星期六、星期日 (45)'18.函数作用:将英文字反转的自定函数 (46)'19.函数作用:计算个人所得税 (46)'20.函数作用:一个能计算是否有重复单元的函数 (47)'21.数字金额转中文大写 (48)'22.函数作用:将数字转成英文 (49)'23.函数作用:人民币大小写转换 (52)'24.函数作用:获取区域颜色值 (53)'25.函数作用:获取活动工作表名 (53)'26.函数作用:获取最后一行行数 (54)'27.函数作用:判断是否连接在线 (54)'28.函数作用:币种转换 (54)'29.函数作用:检验工作表是否有可打印内容 (55)'30.函数作用:查找一字符串(withinstr)在另一字符串中(findstr1)中某一次(startnum)出现时的位置,返回零表示没找到。
Excel中使用VBA语言自定义分支函数的方法与实例

Excel中使用VBA语言自定义分支函数的方法与实例Excel是一款功能强大的电子表格软件,它提供了丰富的函数库,可以满足大部分用户的需求。
然而,有时候我们需要根据自己的具体需求来定义一些特定的函数,这时候就可以使用VBA语言来实现自定义分支函数。
VBA(Visual Basic for Applications)是一种用于Microsoft Office应用程序的宏编程语言,它可以扩展Excel的功能,使用户能够自定义函数、自动化任务等。
下面将介绍一种使用VBA语言自定义分支函数的方法,并给出一个实例。
首先,打开Excel,按下Alt+F11键,进入VBA编辑器界面。
在VBA编辑器中,可以看到左侧的项目资源管理器窗口和右侧的代码窗口。
接下来,我们需要在项目资源管理器窗口中找到自己的工作簿,双击打开,然后在代码窗口中插入一个新的模块。
在新的模块中,我们可以编写自己的VBA代码。
在编写VBA代码之前,我们需要先了解一下分支函数的概念。
分支函数是指根据不同的条件执行不同的操作或返回不同的结果的函数。
在Excel中,常见的分支函数有IF函数和CASE函数。
但是有时候,IF函数和CASE函数的功能无法满足我们的需求,这时候就需要自定义分支函数。
下面是一个使用VBA语言自定义分支函数的实例。
假设我们需要根据学生的成绩来判断他们的等级,90分以上为优秀,80分以上为良好,70分以上为中等,60分以上为及格,60分以下为不及格。
我们可以使用VBA语言来实现这个自定义分支函数。
首先,在代码窗口中插入以下代码:```vbaFunction Grade(score As Double) As StringIf score >= 90 ThenGrade = "优秀"ElseIf score >= 80 ThenGrade = "良好"ElseIf score >= 70 ThenGrade = "中等"ElseIf score >= 60 ThenGrade = "及格"ElseGrade = "不及格"End IfEnd Function```在上述代码中,我们定义了一个名为Grade的函数,它接受一个参数score,表示学生的成绩。
SPC(Cpk、Ppk等)工程能力计算公式和Excel制图1

确定要制定控 制图的特性
是计量 型数据
否
关心的是不 合格品-即坏 零件百分比
否
关心的是不合 格数-即单位 零件不合格数
是 是
样品容量 是否恒定?
是
否
使用P图
样品容量 是否恒定?
是 使用nP或P图
性质上是否是 均勻或不能按 子 组 取 样- 例 如︰化学溶液,
是 使用C或U图
子组均值 是否能方 便地计算?
否
否
使用中位数图
是 是
使用单值图X--MR
子组容 量大于 或等于
否
使用 X--R
是
是否能方 便地计算 组的S值?
Hale Waihona Puke 否使用 X--R是
使用 X--S图
否
使用U图
图 使用中位数图
使用 --R图
使用 --R图
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
'################## stdevR=average(max-min)/R系数组内差Function stdevR(ParamArray rng() As Variant) As VariantDim rang As Range, rngi As Range, T As Single, F As Single, i As Integer, e As IntegerDim trrDim arr()Dim brr()For Each r In rngIf rang Is Nothing Then Set rang = r Else Set rang = Union(rang, r)For Each c In rNextNextn = rang.Cells.Countaa = rang.Columns.Countbb = rang.Rows.Countcc = Application.WorksheetFunction.Ceiling(n / 5, 1)If aa > 1 ThenReDim arr(1 To bb)For i = 1 To bbSet rngi = rang(i, 1).Resize(1, aa)arr(i) = Application.Max(rngi.Value) - Application.Min(rngi)NextF = Application.WorksheetFunction.Average(arr)trr =[{0,1.128,1.693,2.059,2.326,2.534,2.704,2.847,2.97,3.078,3.173,3.258,3.336,3.407,3.472,3.532,3.58 8,3.64,3.689,3.735,3.778,3.819,3.858}]T = trr(aa)stdevR = F / TElsee = 0ReDim brr(1 To cc)For i = 1 To ccSet rngi = rang(1, 1).Resize(5, 1).Offset(e, 0)brr(i) = Application.Max(rngi.Value) - Application.Min(rngi)e = e + 5NextF = Application.WorksheetFunction.Average(brr)T = 2.326stdevR = F / TEnd IfEnd Function'################## ppk=min(ppu,ppl)=(1-k)*pp 整体的过程能力指数带中心值的Function ppk(USL As Variant, LSL As Variant, ParamArray rng() As Variant) As VariantDim AV As Single, rang As Range, n As Integer, T As Single, SumN As Single, SE As Single, k As SingleFor Each r In rngIf rang Is Nothing Then Set rang = r Else Set rang = Union(rang, r)For Each c In rNextNextT = USL - LSLn = rang.Cells.CountAV = Application.WorksheetFunction.Average(rang)For Each r In rangSumN = SumN + Application.WorksheetFunction.Power(r - AV, 2)NextSE = Sqr(SumN / (n - 1))k = Abs(((((USL + LSL) / 2) - AV) / (T / 2)))If USL = "" And LSL = "" Or (1 - k) * T / (SE * 6) < 0 Thenppk = "*"Elseppk = (1 - k) * T / (SE * 6)End IfEnd Function'################## cpk=min(cpu,cpl)=(1-k)*cp 组间的过程能力指数带中心值的Function cpk(USL As Variant, LSL As Variant, ParamArray rng() As Variant) As VariantDim AV As Single, rang As Range, n As Integer, T As Single, SumN As Single, SE As Single, k As Single, aa As SingleFor Each r In rngIf rang Is Nothing Then Set rang = r Else Set rang = Union(rang, r)For Each c In rNextNextT = USL - LSLn = rang.Cells.Countaa = rang.Columns.CountAV = Application.WorksheetFunction.Average(rang)SE = stdevR(rang)k = Abs(((((USL + LSL) / 2) - AV) / (T / 2)))If USL = "" And LSL = "" Or (1 - k) * (T / (SE * 6)) < 0 Thencpk = "*"Elsecpk = (1 - k) * (T / (SE * 6))End IfEnd Function'################## ppu=(USL-X)/3*S 上限过程能力指数Function ppu(USL As Variant, ParamArray rng() As Variant) As VariantDim AV As Single, rang As Range, n As Integer, T As Single, SumN As Single, SE As SingleFor Each r In rngIf rang Is Nothing Then Set rang = r Else Set rang = Union(rang, r)For Each c In rNextNextT = USL - LSLn = rang.Cells.CountAV = Application.WorksheetFunction.Average(rang)For Each r In rangSumN = SumN + Application.WorksheetFunction.Power(r - AV, 2) '计算平方和NextSE = Sqr(SumN / (n - 1))If USL = "" Or (USL - AV) / (3 * SE) < 0 Thenppu = "*"Elseppu = (USL - AV) / (3 * SE)End IfEnd Function'################## ppu=(USL-X)/3*S 上限过程能力指数Function CPU(USL As Variant, ParamArray rng() As Variant) As VariantDim AV As Single, rang As Range, n As Integer, T As Single, SumN As Single, SE As Single For Each r In rngIf rang Is Nothing Then Set rang = r Else Set rang = Union(rang, r)For Each c In rNextNextT = USL - LSLn = rang.Cells.Countaa = rang.Columns.CountAV = Application.WorksheetFunction.Average(rang)SE = stdevR(rang)If USL = "" Or (USL - AV) / (3 * SE) < 0 ThenCPU = "*"ElseCPU = (USL - AV) / (3 * SE)End IfEnd Function'################## ppl=(X-LSL)/3*S 下限过程能力指数Function ppl(LSL As Variant, ParamArray rng() As Variant) As VariantDim AV As Single, rang As Range, n As Integer, T As Single, SumN As Single, SE As Single For Each r In rngIf rang Is Nothing Then Set rang = r Else Set rang = Union(rang, r)For Each c In rNextNextT = USL - LSLn = rang.Cells.Countaa = rang.Columns.CountAV = Application.WorksheetFunction.Average(rang)For Each r In rangSumN = SumN + Application.WorksheetFunction.Power(r - AV, 2) '计算平方和NextSE = Sqr(SumN / (n - 1))If LSL = "" Or (AV - LSL) / (3 * SE) < 0 Thenppl = "*"Elseppl = (AV - LSL) / (3 * SE)End IfEnd FunctionFunction cpl(LSL As Variant, ParamArray rng() As Variant) As VariantDim AV As Single, rang As Range, n As Single, T As Single, SumN As Single, SE As Single For Each r In rngIf rang Is Nothing Then Set rang = r Else Set rang = Union(rang, r)For Each c In rNextNextT = USL - LSLaa = rang.Columns.CountAV = Application.WorksheetFunction.Average(rang)SE = stdevR(rang)n = (AV - LSL) / (3 * SE)If LSL = "" Or n < 0 Thencpl = "*"Elsecpl = nEnd IfEnd Function'################## k=((USL+LSL)/2)-X/(T/2) 偏移系数Function k(USL As Variant, LSL As Variant, ParamArray rng() As Variant) As VariantDim AV As Single, rang As Range, n As Integer, T As Single, SumN As Single, SE As Single For Each r In rngIf rang Is Nothing Then Set rang = r Else Set rang = Union(rang, r)For Each c In rNextNextT = USL - LSLn = rang.Cells.CountAV = Application.WorksheetFunction.Average(rang)If USL = "" Or LSL = "" Thenk = "*"Elsek = Application.WorksheetFunction.RoundUp(Abs(((USL + LSL) / 2) - AV) / (T / 2), 3)End IfEnd Function'##################PP=(USL-LSL)/ 能力指数Function pp(USL As Variant, LSL As Variant, ParamArray rng() As Variant) As VariantDim AV As Single, rang As Range, n As Integer, T As Single, SumN As Single, SE As Single For Each r In rngIf rang Is Nothing Then Set rang = r Else Set rang = Union(rang, r)For Each c In rNextNextT = USL - LSLn = rang.Cells.CountAV = Application.WorksheetFunction.Average(rang)For Each r In rang 'rngSumN = SumN + Application.WorksheetFunction.Power(r - AV, 2)NextSE = Sqr(SumN / (n - 1))If USL = "" Or LSL = "" Or T / (SE * 6) < 0 Thenpp = "*"Elsepp = T / (SE * 6)End IfEnd Function'################## CP=(USL-LSL)/6Q 能力指数Function cp(USL As Variant, LSL As Variant, ParamArray rng() As Variant) As VariantDim AV As Single, rang As Range, n As Integer, T As Single, SumN As Single, SE As SingleFor Each r In rngIf rang Is Nothing Then Set rang = r Else Set rang = Union(rang, r)For Each c In rNextNextT = USL - LSLn = rang.Cells.Countaa = rang.Columns.CountAV = Application.WorksheetFunction.Average(rang)SE = stdevR(rang)If USL = "" Or LSL = "" Or T / (SE * 6) < 0 Thencp = "*"Elsecp = T / (SE * 6)End IfEnd Function'################## Fpu(cap)=1-NORMDIST(3*CPU) 超出规格上限概率Function Fp(ByVal PU) As VariantDim i As DoubleIf Application.WorksheetFunction.IsNumber(PU) = True Theni = 3 * PUFp = Format((1 - Application.WorksheetFunction.NormSDist(i)) * 1000000, "Fixed")ElseFp = 0End If'Fp = i '1 - Application.WorksheetFunction.NormSDist(i)End Function'################## 正态随机数Function RANDS(USL As Variant, LSL As Variant, WS As Variant, CPK As Variant, Optional JRSAs Integer, Optional SEE As Integer) As VariantDim AV As Single, T As Single, Su As Single, SE As Single, k As SingleT = USL - LSLk = USL + LSLAV = k / 2If SEE = 0 ThenSE = T / CPK / 6ElseSE = T / CPK / SEEEnd IfSu = Application.WorksheetFunction.RoundUp(0.0000000000001, WS)If JRS = 0 ThenRANDS =Application.WorksheetFunction.RoundUp(Application.WorksheetFunction.Ceiling(Application.Wor ksheetFunction.NormInv(Rnd(), AV, SE), Su), WS)End IfIf JRS = 2 ThenRANDS =Application.WorksheetFunction.RoundUp(Application.WorksheetFunction.Ceiling(Application.Wor ksheetFunction.NormInv(Rnd(), AV, SE), Su * 2), WS)End IfIf JRS = 1 ThenRANDS =Application.WorksheetFunction.RoundUp(Application.WorksheetFunction.Ceiling(Application.Wor ksheetFunction.NormInv(Rnd(), AV, SE), Su * 2) + Su, WS)End IfEnd Function'***************************************功能:函数帮助文件Sub Fuhelp(control As IRibbonControl)Dim 函数名称 As String '函数名称Dim 函数描述 As String '函数描述Dim 函数类别 As String '函数类别Dim 参数个数(2) As String '函数参数描述数组个数Dim arr()函数类别 = "品质使用函数"参数个数(0) = "函数参数第1个,规格上限"参数个数(1) = "函数参数第2个,规格下限"参数个数(2) = "函数参数第3个,用于计算的数据区域"ReDim arr(1 To 4)arr = [{"cpk","ppk","cp","pp"}]For i = 1 To 4Call Application.MacroOptions(Macro:=arr(i), Description:=函数描述, Category:=函数类别, ArgumentDescriptions:=参数个数)函数名称 = arr(i)函数描述 = "返回数据的" & 函数名称 & "值"Next i End Sub。