由于要计算毛坯重量,要从产品规格中截取零件的直径、长、宽和高。从PDM中导出的数据中发现,设计院设置的规格不是很规范,研究方法如下:

1、外形的判断

=IF(TRIM(OR(MID(F2,1,1)="Ф",MID(F2,1,1)="∅",MID(F2,1,1)="Ø",MID(F2,1,1)="φ")),"圆料",IF(LEN(F2)-LEN(SUBSTITUTE(F2,"×",""))=2,"方料",""))

圆料是通过判断首字母是否带有直径符号,用MID(F2,1,1);
方料规格是长×宽×高,所有是否有2个×符号为判断依据,用IF(LEN(F2)-LEN(SUBSTITUTE(F2,“×”,“”))=2,将×替换成空值,然后用原字符串长度减替换后的字符串长度。
结果如下:

2、圆料直径

=IF(G2="圆料",MID(F2,2,SEARCH("×",F2,1)-2),"")

SEARCH(“×”,F2,1)-2)是查找×在字符串的位置,-2是因为用MID从第二位开始查找。
结果如下:

3、长度

=IFNA(LOOKUP(9^99,--LEFT(MID(F2,FIND(CHAR(1),SUBSTITUTE(F2,"×",CHAR(1),LEN(F2)-LEN(SUBSTITUTE(F2,"×",""))))+1,99),ROW($1:$99))),"")

圆料的长度是×后的数字,但原数据中有的规格后面还加了说明
方料的长度是第二个×后的数字,同样有的也加了说明

参考https://blog.51cto.com/snowdream/1418455和http://www.nkmyjy.com/myjy/item_12909016_526765.html
说明:

 LEN(F22)-LEN(SUBSTITUTE(F22,"×",""))

:判断有几个×。

SUBSTITUTE(F22,"×",CHAR(1),LEN(F22)-LEN(SUBSTITUTE(F22,"×","")))

:用于替换最后一个×,CHAR(1)也可用任何一个特殊符号代替。

MID(F22,FIND(CHAR(1),SUBSTITUTE(F22,"×",CHAR(1),LEN(F22)-LEN(SUBSTITUTE(F22,"×",""))))+1,99)

截取从CHAR(1)+1后的字符,99只是虚数。

=IFNA(LOOKUP(9^99,--LEFT(MID(F22,FIND(CHAR(1),SUBSTITUTE(F22,"×",CHAR(1),LEN(F22)-LEN(SUBSTITUTE(F22,"×",""))))+1,99),ROW($1:$99))),"")

ROW($1:$99)是取1-99的行号,这里作用是程序生成数组{1,2,3,4,…99}
LEFT(字符串,ROW($1:$99))的是生成{a,ab,abc,abcd…}这样的数组
“-LEFT”,数字生成负数,字符则生成错误码
“–LEFT”负负得正。
LOOKUP(9^99,字符串) LOOKUP 的原理是找不到与“查找值”相等的数,它会使用“查找区域”中小于或等于 “查找值”的最大值。

其中9^99也是个虚数

IFNA的作用是有无效值则为空
最终结果如下:

注:后发现圆料中也有两个×的值,会造成取值错误,增加判断,当是圆料时,取第一个×后的数字

=IF(G2="方料",LOOKUP(9^99,--LEFT(MID(F2,FIND(CHAR(1),SUBSTITUTE(F2,"×",CHAR(1),LEN(F2)-LEN(SUBSTITUTE(F2,"×",""))))+1,99),ROW($1:$99))),IF(G2="圆料",LOOKUP(9^99,--LEFT(MID(F2,FIND(CHAR(1),SUBSTITUTE(F2,"×",CHAR(1),1))+1,99),ROW($1:$99))),""))

4、宽度

=IF(G2="方料",MID(F2,FIND("×",F2,1)+1,FIND(CHAR(1),SUBSTITUTE(F2,"×",CHAR(1),LEN(F2)-LEN(SUBSTITUTE(F2,"×",""))))-FIND("×",F2,1)-1),"")

这个用MID是从方料中截取两个×之间的值
结果如下

5、高度

=IF(G2="方料",MID(F2,1,FIND("×",F2,1)-1),"")

用MID从方料中截取第一个×前的数值
结果如下:

EXCEL从字符串中截取数字(规格中取直径、长、宽、高)相关推荐

  1. mysql sql 字符串字段保留数字_sql中取字符串中的数字语句_MySQL

    bitsCN.com one: declare @s varchar(20) declare @i varchar(20) set @i='' set @s='新会员必须购买350元产品' while ...

  2. java 字符串中提取数字_java中如何提取字符串中的数字?

    展开全部 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; publi ...

  3. python读单行文本求平均值_如何从文本文件python中的数字列表中找到平均值

    在文本文件中,有一个名称列表,旁边有一个数字,表示他们在本例中的分数.有没有办法计算出文本文件中所有数字的平均值.在 代码:print("average calculator") ...

  4. 微信公众号文章中图片加载时,占位图宽高大小的确定

    打开一篇多图的微信公众好文章.在图片加载过程中,我们发现微信对每一个img都塞了也个占位图,而且占位图的宽高就是实际加载完图的宽高.这是如何做到的呢? 1.微信所有的img标签里,都有自定义的data ...

  5. 安卓代码中获取dp值为控件设置宽高,获取dimen值

    引言: 今天遇到一个问题,在自定义控件的时候,要求在代码中设置控件的宽高.本来自以为:对嘛,很简单,就是直接设置params //这样直接初始化的时候设置LayoutParams iconparams ...

  6. python字符串转化为数字-python 中判断字符串能否转换为数字类型

    方法一: isdigit() 不可识别汉字 小数类型 str1 = "1" str2 = "2.1" str3 = "三" str4 = & ...

  7. java字符串包含连续数字,Java中包含数字的排序字符串

    小编典典 尝试使用此比较器,该比较器将删除所有非数字字符,然后将其余字符与数字进行比较: Collections.sort(strings, new Comparator() { public int ...

  8. python提取文本中的数字_EXCEL中提取汉字、字母、数字如此简单

    不啰嗦,直奔主题-- 看看如何提取,一般使用函数提取,难度较大 先看一下数据源: 分别提取数字.字母和汉字 方案1:传统函数公式法 传统的函数方式难度较大,这里只演示一下提取数字,其他不再演示 通用数 ...

  9. pgsql怎么从interval中取出数字_tp6中swoole扩展websocket的使用

    相信不少人都已经知道tp6.0已经适配swoole.并推出think-swoole 3.0 ,这次就来介绍下tp6中swoole扩展websocket的使用. Websocket 继承与Http,进行 ...

最新文章

  1. python之 数据类型判定与类型转换
  2. dotNet中,取得指定日期所在月份的最后一天
  3. 【Google Play】创建并设置应用 ( 访问权限 | 内容分级 | 受众群体 | 类别及联系方式 | 商品详情 )
  4. ext.net TreePanel单击取值
  5. 决策树-熵计算-ID3算法(转)
  6. SQL Server 2005客户端安装和端口设置
  7. ultraedit26 运行的是试用模式_如何并行运行你的自动化测试?
  8. JS prototype作用
  9. mysql 查看密码_Ubuntu安装和配置MySQL数据库
  10. 选项卡jacascript
  11. C# 生成word文档(NPOI.XWPF)
  12. 越狱环境下代码控制手机重启(IOS,XCODE)
  13. Linux编辑器-vim的使用的 “打字练习“
  14. 微信公众平台接口API
  15. 高数定理、法则(持续添加)
  16. Python一行代码实现正三角形
  17. WebGIS地图相关学习笔记
  18. Docker的镜像制作与整套项目一键打包部署
  19. OSChina App代码分析二
  20. 调试运用(电流标幺化,PWMDAC调试,ARCTAN反正切)

热门文章

  1. Python3+Selenium3自动化测试框架——②流程梳理及代码封装
  2. 探寻宝藏 【算法设计与分析课设】 c语言代码 + 思路详解 + 三维优化
  3. Web网站模板-响应式个人企业照片墙展示网站模板(HTML+CSS+JavaScript)
  4. node.js生成条形码图片
  5. Mybatis————核心配置文件标签和动态常用的SQL标签
  6. 解决opencv中cv2.VideoCapture()函数打开USB视频慢的问题
  7. 岁末寄语Dian团队#8212;#8212;2007年团队年鉴编首语(转摘)
  8. 支付宝授权获取芝麻信用分数
  9. 两台主机ping不通(一台能行,一台不行)
  10. 集五福华为机试python_2020 春节集五福最详细收集攻略