ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: feiger32911

提取文本字符串中最小的数值

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2011-12-3 12:53 | 显示全部楼层
本帖已被收录到知识树中,索引项:拆分和提取
laowuwyx 发表于 2011-12-2 09:29
数组。

请问老师,left(,column(a:i)-1)这里为什么要减1
-mid(c2,row(1:50)-1,2)这里为什么也要减1
第一个减1,我理解是把想要数字旁边的非数字字符去掉,可是为什么不用column(a:h);
第二个减1,我理解是因为前面C2&"W",并了一个"W",遍历的时候减1就取不到'W'了
是这样吗?还是有点想不通,请老师解惑,谢谢!

TA的精华主题

TA的得分主题

发表于 2011-12-3 17:13 | 显示全部楼层
香川群子 发表于 2011-12-2 16:10
来个另类,VBA自定义函数方法。
夹杂的字符种类无限制,单元格内容长度无限制。

请教:如果加下面这行声明变量代码,p、q初始值设为多少结果才正确呢?(否则小数会出错)
Dim i As Integer, t As Integer, p As Integer, q As Integer

TA的精华主题

TA的得分主题

发表于 2011-12-3 18:46 | 显示全部楼层
yzlsc 发表于 2011-12-3 17:13
请教:如果加下面这行声明变量代码,p、q初始值设为多少结果才正确呢?(否则小数会出错)
Dim i As Int ...

没必要声明变量。


如果一定要声明,那么当然声明Double啦。

TA的精华主题

TA的得分主题

发表于 2011-12-4 10:39 | 显示全部楼层
香川群子 发表于 2011-12-3 18:46
没必要声明变量。

谢谢老师及时回复。

TA的精华主题

TA的得分主题

发表于 2011-12-4 13:26 | 显示全部楼层
huanglicheng 发表于 2011-12-2 17:14
自定义函数供参考

这个不错!
可以把min改为max,average就得到了最大值,平均值了。

TA的精华主题

TA的得分主题

发表于 2011-12-4 14:05 | 显示全部楼层
wshcw 发表于 2011-12-2 09:26
=MIN(--TEXT(MID(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(C2,"×","m"),"*","m"),"=","m"),"m",REPT( ...

老师:
字符串以汉字开始就不行的哟

TA的精华主题

TA的得分主题

发表于 2011-12-4 14:33 | 显示全部楼层
自定义函数稍作改进,以便通过第二参数设置,分别得到:
1. 最小值
2. 最大值
3. 总和
4. 数值个数
5. 平均值
6. 累计乘积
  1. Function EvNum(Txt, Optional k = -1)
  2.     Txt = "C" & Txt
  3.     r = 1
  4.     For i = 1 To Len(Txt)
  5.         t = Val(Right(Txt, i))
  6.         If t = 0 Then
  7.             If p > 0 Then
  8.                 If p < n Or n = 0 Then n = p
  9.                 If p > m Or m = 0 Then m = p
  10.                 s = s + p
  11.                 r = r * p
  12.                 c = c + 1
  13.             End If
  14.             p = 0
  15.         Else
  16.             p = t
  17.         End If
  18.     Next

  19.     If k = 0 Then
  20.         EvNum = s / c '平均值
  21.     ElseIf k = 1 Then
  22.         EvNum = m '最大值
  23.     ElseIf k = 2 Then
  24.         EvNum = s '总和
  25.     ElseIf k = 3 Then
  26.         EvNum = r '累积(数值连乘积)
  27.     ElseIf k = -1 Then
  28.         EvNum = n '最小值
  29.     ElseIf k = -2 Then
  30.         EvNum = c '数值个数
  31.     End If
  32.    
  33. End Function
复制代码
请看附件

Book1_2.rar

8.12 KB, 下载次数: 11

TA的精华主题

TA的得分主题

发表于 2011-12-4 15:29 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2012-1-7 00:44 | 显示全部楼层
  1. Sub minval()
  2. Dim i%, arr, brr() As Double, ojs As Object
  3. Set ojs = CreateObject("scriptcontrol"): ojs.Language = "jscript"
  4. ojs.eval "function gets(str){return str.match(/\d+\.?\d*/g)}"
  5. For Each Rng In Range("c2", [c65536].End(3))
  6. arr = Split(ojs.codeobject.gets(Rng.Value), ",")
  7. ReDim brr(0 To UBound(arr))
  8. For i = 0 To UBound(arr)
  9. brr(i) = Val(arr(i))
  10. Next i
  11. Rng(1, 3) = Application.min(brr)
  12. Next
  13. Stop
  14. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2012-8-30 11:35 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-3 15:58 , Processed in 0.032743 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表