精华内容
下载资源
问答
  • 大家好,前面的文章中小编分享了使用快捷键【Ctrl+E】技巧完成混合文本提取数字,适合初学者和函数不熟悉的同学。 对于熟悉函数的小伙伴们,还是偏向于公式来提取数字,毕竟有些混合文本用函数公式提取比技巧要方便...
    大家好,前面的文章中小编分享了使用快捷键【Ctrl+E】技巧完成混合文本提取数字,适合初学者和函数不熟悉的同学。
    

    对于熟悉函数的小伙伴们,还是偏向于公式来提取数字,毕竟有些混合文本用函数公式提取比技巧要方便快捷,只要解决如何设置公式,再多的单元格复制公式就可以了

    情景一:数字固定长度、在文本的左边或者右边
    在这里插入图片描述

    像上图表格中数字都在右边,而且手机号我们都知道是11位,这样我们可以直接用函数来提取

    方法:在B2单元格输入公式:

    =RIGHT(A2,11) 
    

    然后再下拉或双击填充公式即可完成全部提取手机号
    在这里插入图片描述

    情景二:数字位置固定(在左侧)、但长度不同

    上图表格中不全是手机号,还有其它数字,虽然数字位置从头开始,但长度不一致,怎么办呢?

    方法:在B2单元格输入公式:

    =LEFT(A2,2*LEN(A2)-LENB(A2))
    

    然后再下拉或双击填充公式,即可完成整列数字提取

    在这里插入图片描述

    情景三:数字位置固定(数字在右侧)、长度不同

    数字在右侧时,类似情景二,把【LEFT】函数换成【RIGHT】函数即可

    方法:在B2单元格输入公式:

    =RIGHT(A2,2*LEN(A2)-LENB(A2))
    

    然后再下拉或双击填充公式,即可完成整列数字提取

    在这里插入图片描述
    情景四:数字位置固定(数字在中间)、长度不同

    固定位置长度不同的文本可以通过【MID】函数来解决

    方法:在B2单元格输入公式:

    =MID(A2,3,2*LEN(A2)-LENB(A2))
    

    然后再下拉或双击填充公式,即可完成整列数字提取

    在这里插入图片描述

    情景五:数字两端有特殊符号

    上图表格中,数字位置、长度都不固定,唯一能看到的在数字两端有"-"符号,这时候应该如何处理呢?

    方法:在B2单元格输入公式:

    =TRIM(MID(SUBSTITUTE(A2,"-",REPT(" ",99)),99,99))
    

    然后再下拉或双击填充公式,即可完成整列数字提取

    在这里插入图片描述

    小伙伴们,在使用Excel中还碰到过哪些问题,评论区留言一起讨论学习

    您的点赞转发就是对小编最大的支持,欢迎关注评论

    展开全文
  • OCR 文字特征提取

    千次阅读 2017-03-08 17:58:55
    作为OCR系统的第一步,特征提取是希望找出图像中候选的文字区域特征,以便我们在第二步进行文字定位和第三步进行识别. 在这部分内容中,我们集中精力模仿肉眼对图像与汉字的处理过程,在图像的处理和汉字的定位方面...

    作为OCR系统的第一步,特征提取是希望找出图像中候选的文字区域特征,以便我们在第二步进行文字定位和第三步进行识别. 在这部分内容中,我们集中精力模仿肉眼对图像与汉字的处理过程,在图像的处理和汉字的定位方面走了一条创新的道路. 这部分工作是整个OCR系统最核心的部分,也是我们工作中最核心的部分.

    传统的文本分割思路大多数是“边缘检测 + 腐蚀膨胀 + 联通区域检测”,如论文[1]. 然而,在复杂背景的图像下进行边缘检测会导致背景部分的边缘过多(即噪音增加),同时文字部分的边缘信息则容易被忽略,从而导致效果变差. 如果在此时进行腐蚀或膨胀,那么将会使得背景区域跟文字区域粘合,效果进一步恶化.(事实上,我们在这条路上已经走得足够远了,我们甚至自己写过边缘检测函数来做这个事情,经过很多测试,最终我们决定放弃这种思路。)

    因此,在本文中,我们放弃了边缘检测和腐蚀膨胀,通过聚类、分割、去噪、池化等步骤,得到了比较良好的文字部分的特征,整个流程大致如图2,这些特征甚至可以直接输入到文字识别模型中进行识别,而不用做额外的处理.由于我们每一部分结果都有相应的理论基础作为支撑,因此能够模型的可靠性得到保证.

    特征提取大概流程.png
    图2:特征提取大概流程

    在这部分的实验中,我们以图3来演示我们的效果. 这个图像的特点是尺寸中等,背景较炫,色彩较为丰富,并且文字跟图片混合排版,排版格式不固定,是比较典型的电商类宣传图片. 可以看到,处理这张图片的要点就是如何识别图片区域和文字区域,识别并剔除右端的电饭锅,只保留文字区域.

    小米电饭锅.jpg
    图3:小米电饭锅介绍图

    图像的预处理

    首先,我们将原始图片以灰度图像的形式读入,得到一个m×nm×n的灰度矩阵MM,其中m,nm,n是图像的长、宽. 这样读入比直接读入RGB彩色图像维度更低,同时没有明显损失文字信息. 转换为灰度图事实上就是将原来的RGB图像的三个通道以下面的公式整合为一个通道:

    Y=0.299R+0.587G+0.114B(1)(1)Y=0.299R+0.587G+0.114B

    图3的灰度图如下图.
    灰度图像.png

    图像本身的尺寸不大,如果直接处理,则会导致文字笔画过小,容易被当成噪音处理掉,因此为了保证文字的笔画有一定的厚度,可以先将图片进行放大. 在我们的实验中,一般将图像放大为原来的两倍就有比较好的效果了.

    不过,图像放大之后,文字与背景之间的区分度降低了. 这是因为图片放大时会使用插值算法来填补空缺部分的像素. 这时候需要相应地增大区分度. 经过测试,在大多数图片中,使用次数为2的“幂次变换”效果较好. 幂次变换为

    xxr(2)(2)x↦xr

    其中xx代表矩阵MM中的元素,rr为次数,在这里我们选取为2. 然后需要将结果映射到[0,255][0,255]区间:
    xxMminMmaxMmin×255(3)(3)x↦x−MminMmax−Mmin×255

    其中Mmax,MminMmax,Mmin是矩阵MM的最大值和最小值. 经过这样处理后,图像如下图.
    幂次变换.png

    灰度聚类

    接着我们就对图像的色彩进行聚类. 聚类的有两个事实依据:

    1. 灰度分辨率 肉眼的灰度分辨率大概为40,因此对于像素值254和255,在我们肉眼看来都只是白色;
    2. 设计原则 根据我们一般的审美原则,在考虑海报设计、服装搭配等搭配的时候,一般要求在服装、海报等颜色搭配不超过三种颜色.

    更通俗地说,虽然灰度图片色阶范围是[0,255][0,255],但我们能感觉到的整体的色调一般不多,因此,可以将相近的色阶归为一类,从而减少颜色分布,有效地降低噪音.

    事实上,聚类是根据图像的特点自适应地进行多值化的过程,避免了传统的简单二值化所带来的信息损失. 由于我们需要自动地确定聚类数目,因此传统的KMeans等聚类方法被我们抛弃了,而且经过我们测试,诸如MeanShift等可行的聚类方法又存在速度较慢等缺陷. 因此,我们自行设计了聚类方法,使用的是“核概率密度估计”的思路,通过求颜色密度极值的方式来聚类.

    核密度估计

    经过预处理的图像,我们可以对每个色阶的出现次数进行统计,得到如图5的频率分布直方图:

    对预处理后的图像进行灰色阶统计.png
    图5:对预处理后的图像进行灰色阶统计

    可以看到,色阶的分布形成了几个比较突出的峰,换言之,存在一定的聚类趋势. 然而,直方图的统计结果是不连续的,一个平滑的结果更便于我们分析研究,结果也更有说服力. 将统计结果平滑化的方法,就是核密度估计(kernel density estimation).

    核密度估计方法是一种非参数估计方法,由Rosenblatt和Parzen提出,在统计学理论和应用领域均受到高度的重视[2]. 当然,也可以简单地将它看成一种函数平滑方式. 我们根据大量的数据来估计某个值出现的概率(密度)时,事实上做的是如下估算:

    p^(x)=1nhi=1nK(xxih)(4)(4)p^(x)=1nh∑i=1nK(x−xih)

    其中K(x)K(x)称为核函数. 当hh取为1,且K(x)K(x)
    K(x)={1,x=00,x0(5)(5)K(x)={1,x=00,x≠0

    时,就是我们上述的直方图估计. K(x)K(x)这一项的含义很简单,它就是告诉我们在范围hh内的xixi都算入到xx中去,至于怎么算,由K(xxih)K(x−xih)给出. 可见,hh的选择对结果的影响很大,hh我们称之为带宽(bandwidth),它主要影响结果的平滑性.

    如果K(x)K(x)是离散的,得到的结果还是离散的,但如果K(x)K(x)是光滑的,得到的结果也是比较光滑的. 一个常用的光滑函数核是高斯核:

    K(x)=12πex2/2(6)(6)K(x)=12πe−x2/2

    所得到的估计也叫高斯核密度估计. 在这里,我们使用scott规则自适应地选取hh,但需要手动指定一个平滑因子,在本文中,我们选取为0.2.对于示例图片,我们得到如图6的红色曲线的结果.

    频率分布的高斯核密度估计.png
    图6:频率分布的高斯核密度估计

    极大极小值分割

    从图6中我们进一步可以看出,图像确实存在着聚类趋势. 这表现为它有几个明显的极大值和极小值点,这里的极大值点位于x=10,57,97,123,154x=10,57,97,123,154,极小值点位于25,71,121,14225,71,121,142.

    因此,一个很自然的聚类方法是:有多少个极大值点,就聚为多少类,并且以极小值点作为类别之间的边界. 也就是说,对于图3,可以将图像分层5层,逐层处理. 分层之后,每一层的形状如下图,其中白色是1,黑色是0.

    图层1.png 图层2.png
    图层3.png 图层4.png
    图层5.png
    通过聚类将图像分为5个图层

    可见,由于“对比度”和“渐变性”假设,通过聚类确实可以将文字图层通过核密度估计的聚类方法分离开来. 而且,通过聚类分层的思路,无需对文字颜色作任何假定,即便是文字颜色跟背景颜色一致时,也可以获得有效检测.


    转载到请包括本文地址:http://spaces.ac.cn/archives/3785/

    如果您觉得本文还不错,欢迎点击下面的按钮对博主进行打赏。打赏并非要从中获得收益,而是希望知道有多少人曾在科学空间驻足。当然,如果你无视它,也不会影响你的阅读。再次表示欢迎和感谢!
    展开全文
  • 字母数字字符串中提取数字

    千次阅读 2014-09-30 10:43:06
    本文的作者是 Ashish Mathur,是一位 Microsoft MVP(最有价值专家)。有关详细信息,请访问 ...在下文中,我将说明以下各种情况中的字符串内提取数字的公式: 当字母字符和数字字符连在一起时,如 a

    http://office.microsoft.com/zh-cn/excel-help/HA001154901.aspx

    本文的作者是 Ashish Mathur,是一位 Microsoft MVP(最有价值专家)。有关详细信息,请访问 Microsoft MVP 网站(英文)

    在下文中,我将说明从以下各种情况中的字符串内提取数字的公式:

    • 当字母字符和数字字符连在一起时,如 abc123678sfr
    • 当字母字符和数字字符没有连在一起时,如 abc15tni

    问题

    如何提取字母数字字符串的数字部分。例如:如果单元格 A1 包含的是字符串“abc123”,则将值 123 返回单元格 B1 中。

    解决方案

    此解决方案的基本原理是搜索并返回字母数字字符串中的第一个数字,然后只返回其后的数字。

    算法

    此解决方案包括创建公式以完成下列任务:

    1. 将字母数字字符串分解为单独的字符。
    2. 确定分解后的字符串中是否有数字。
    3. 确定数字在字母数字字符串中的位置。
    4. 计算字母数字字符串中数字的数量。

    我们将分别考虑这些任务,然后将各公式整合在一起以得到最终结果。

    将字母数字字符串分解为单独的字符

    请在此使用 MID 函数。MID 可以根据所指定的字符的数量,从所指定的位置开始,从文本字符串中返回特定数量的字符。此函数的语法是:

    MID(text,start_num,num_chars)

    • Text    文本字符串包含的是要提取的字符。
    • Start_num    要从文本中提取的第一个字符串的位置。文本中第一个字符占据 start_num 1,以此类推。
    • Num_chars    指定要 MID 从文本中返回的字符数量。

    对于我们的示例,公式为:

    =MID(A1,ROW($1:$9),1)

    此公式可以分解字母数字字符串,并且实际上会将字符置于工作表的不同行内。例如,对于字母数字字符串 abc123,其所有 6 个字符都将被分开。

    注释   可将数值 9 适当增大为任何更大的数值,以适应更长的字符串。在此示例中,最大字符串长度为 9。

    值得一提的是,字符串分解之后,“1”、“2”和“3”将被看作文本而不是数字。要将存储为文本的数字转换成数字,请用 1 乘以此公式,例如:

    =1*MID(A1,ROW($1:$9),1)

    确定分解后的字符串中是否有数字

    在此我们将使用 ISNUMBER 函数,此函数可以确定字母数字字符串中是否有数字。公式现在变成了:

    =ISNUMBER(1*MID(A1,ROW($1:$9),1))

    如果字符串中有数字,则结果将为 TRUE,否则结果将为 FALSE。

    确定数字在字母数字字符串中的位置

    现在我们将通过在上一段中提到的分解后的字符串的结果中查找 TRUE 值来确定数字的位置。在此我们将使用 MATCH 函数。经过修改的公式现在变为:

    =MATCH(TRUE,ISNUMBER(1*MID(A1,ROW($1:$9),1)),0)

    要点   必须通过按 Ctrl+Shift+Enter 将此公式作为数组进行输入。

    如果字符串是 abc123,则此公式产生的结果将是 4,这就是字母数字字符串中第一个数字字符的位置。

    计算字母数字字符串中数字的数量

    现在的任务是计算字符串中数字的数量,以确定返回字母数字字符串中第一个数字之后要返回的字符。

    如上所述,可通过用 1 与其相乘,将字母数字字符串中存储为文本的数字转换成数字。例如, =1*MID(A1,ROW($1:$9),1)

    将存储为文本的数字转换成数字之后,可以通过使用 COUNT 函数对其进行计数。可通过输入以下公式计算数字的数量:

    =COUNT(1*MID(A1,ROW($1:$9),1))

    整合各公式

    现在我们将使用 MID 函数把此公式的各部分整合在一起,如以下示例所示。

    =MID(A1,MATCH(TRUE,ISNUMBER(1*MID(A1,ROW($1:$9),1)),0),COUNT(1*MID(A1,ROW($1:$9),1)))

    从本质上说,此问题可陈述为:确定第一个数字在字母数字字符串(在单元格 A1 中)中的位置。返回此数字及其后的数字。

    要将得到的字符转换成数字,请用 1 乘此公式。虽然对此并不严格要求,但如果要对结果执行数学运算,则应该如此操作。下面是要输入单元格 B1 中的最终公式:

    =1*MID(A1,MATCH(TRUE,ISNUMBER(1*MID(A1,ROW($1:$9),1)),0),COUNT(1*MID(A1,ROW($1:$9),1)))

    要点   必须通过按 Ctrl+Shift+Enter 将这些公式作为数组进行输入。

    更多示例

    要进一步测试此公式,请将下图中的数据输入空工作表中的单元格 A1:A7 中。

    字符串转换示例

    将此公式输入单元格 B1 中,然后使用自动填充将此公式复制到单元格 B2:B7 中。(不要忘记按 Ctrl+Shift+Enter。)

    在此值得一提的是,如果字符串是 yur09875reew,而且您使用的是已乘 1 的公式,则列 B 中的结果将是 9875 而不是 09875。因为 0*1=0,所以 0 被忽略了,返回的结果是 9875。如果想得到结果 09875,则不要用 1 乘以整个公式。

     

     

     

    =-===========================

    excel,index和match函数

    http://zhidao.baidu.com/link?url=Xh98mraINFP6_OCjmONSmnW6CYRUFwtTJkypRaZ-xX3ppKQZTduuvIZ3J237MY2VTDOYxBdEHK0L1X2OWb5u4GMkV4jQO-ZKYGb3h3QBZxW

     

    MATCH(要查找的内容,查找的区域,精确查找或近似查找)
    这个函数搜索可以返回要查找的内容在查找区域中的位置,参数0为精确查找,参1为近似查找

    =MATCH(B7,A2:A4,0)   按图中得出的值应为2
    意思就是在A2至A4单元格区域中精确查找与B7单元格内容相同的单元格在这列区域中是第几个
    =MATCH(A7,B1:D1,0)   按图中得出的值应为3
    意思就是在B1至D1单元格区域中精确查找与A7单元格内容相同的单元格在这行区域中是第几个

    INDEX(待返回值所在的单元格区域,第某行,第某列)
    这个函数可以返回在指定区域中第某行第某列所在的单元格内容


    =INDEX(B2:D4,2,3)   按图中得出的值应为D3单元格内容即40
    在B2单元格至D4单元格中的第二行就是表格中的第三行,第三列就是D列,所以值为D3

    如,取A列单元格区域中第5行的值,则公式为
    =INDEX(A:A,5)    即返回A5单元格内容

    如取第二行单元格中第10列的值,公式为
    =INDEX(2:2,10)    即返回J2单元格内容

    如在A列至G列行数为1至100行的单元格区域中找第23行,第4列单元格的内容,则公式为
    =INDEX(A1:G100,23,4)   即返回D23单元格的内容

    $是绝对引用符号

    A1相对引用
    $A1绝对引用列
    A$1绝对引用行
    $A$1绝对引用行和列
    $在谁的前面就绝对引用谁
    F4是在四种引用间相互转换的快捷键(在编辑栏输入公式时按下F4功能键可进行切换)

    相对引用、绝对引用和混合引用是指在公式中使用单元格或单元格区域的地址时,当将公式向旁边复制时,地址是如何变化的。
    具体情况举例说明:
          1、相对引用,复制公式时地址跟着发生变化,如C1单元格有公式:=A1+B1
    当将公式复制到C2单元格时变为:=A2+B2
    当将公式复制到D1单元格时变为:=B1+C1
          2、绝对引用,复制公式时地址不会跟着发生变化,如C1单元格有公式:=$A$1+$B$1
    当将公式复制到C2单元格时仍为:=$A$1+$B$1
    当将公式复制到D1单元格时仍为:=$A$1+$B$1
           3、混合引用,复制公式时地址的部分内容跟着发生变化,如C1单元格有公式:=$A1+B$1
    当将公式复制到C2单元格时变为:=$A2+B$1
    当将公式复制到D1单元格时变为:=$A1+C$1
           规律:加上了绝对地址符“$”的列标和行号为绝对地址,在公式向旁边复制时不会发生变化,没有加上绝对地址符号的列标和行号为相对地址,在公式向旁边复制时会跟着发生变化。混合引用时部分地址发生变化。
    http://office.microsoft.com/zh-cn/excel-help/HP010342940.aspx?CTT=1
    http://office.microsoft.com/zh-cn/mac-excel-help/HA102928059.aspx?CTT=1

    如果你要用VLOOKUP函数,则公式可以写成
    =VLOOKUP(A7,A$2:$D$4,MATCH(B7,B$1:D$1,)+1,)

    =VLOOKUP(A7,A$2:$D$4,MATCH(B7,A$1:D$1,),)

     

     

    ==============

    在相对引用、绝对引用和混合引用间切换

    默认情况下,单元格引用是相对 (相对引用:在公式中,基于包含公式的单元格与被引用的单元格之间的相对位置的单元格地址。如果复制公式,相对引用将自动调整。相对引用采用 A1 样式。)的。例如,当您引用单元格 A2 到单元格 C2,实际上引用的是左边的两列(C 减去 A)和同一行 (2) 中的单元格。包含相对单元格引用的公式会因为您将它从一个单元格复制到另一个而发生改变。例如,如果您将单元格 C2 中公式“=A2+B2”复制到 D2,D2 中的公式将向下调整一行成为“=A3+B3”。如果希望在复制时保留此示例中的原始单元格引用,需要在列(A 和 B)和行 (2) 之前加上美元符号 ($) 来使单元格引用变为绝对 (绝对单元格引用:公式中单元格的精确地址,与包含公式的单元格的位置无关。绝对引用采用的形式为 $A$1。)。然后,当您从 C2 复制公式 (=$A$2+$B$2) 到 D2,该公式仍然是完全相同。

    在不频繁的情况下,您可能希望使单元格引用变为“混合”,在前面的列值或行值之前加美元符号以“锁定”列或行(例如,$A2 或 B$3)。若要更改单元格引用的类型:

    1. 选择包含公式的单元格。
    2. 编辑栏 编辑栏:位于 Excel 窗口顶部的条形区域,用于输入或编辑单元格或图表中的值或公式。编辑栏中显示了存储于活动单元格中的常量值或公式。 编辑栏 中,选择要更改的引用。
    3. 按 F4 在引用类型之间切换。

    下表总结了当将包含引用的公式向下和向右复制两个单元格时引用类型的更新方式。

    对于正在复制的公式: 如果引用是: 它会更改为:
    正复制的公式 $A$1(绝对列和绝对行) $A$1(引用是绝对的)
      A$1(相对列和绝对行) C$1(引用是混合型)
      $A1(绝对列和相对行) $A3(引用是混合型)
      A1(相对列和相对行) C3(引用是相对的)

     

    ==============

    http://www.111cn.net/office/excel/50362.htm

    LEN(A2) – LEN(SUBSTITUTE(A2, ” “, “”) 获取字符串中空格的个数
    SUBSTITUTE(A2, ” “, “-”, step1) 将最后一个空格替换为”-”
    FIND(“-”, step2) 找到最后一个空格的位置
    RIGHT(A2, LEN(A2) – step3) 返回最后一个空格之后的字符串
    IF(ISERROR(FIND(” “, A2)), A2, step4) 字符串中没有空格时不做处理,避免出现#VALUE!的结果


    利用上面的函数我们来看一个查找字符串中*星号位置并取出

    所以,要想查找字符串中的,*星号和?问号,必须在其前面加上这样的一个符号 ~ 方能找到。


    上表中,每个单元格都包含两个*星号,同时还包含三组数字,但是,每组数字的长度都不一样,有的长有的短。现在的问题是,如何把每个单元格中被*星号隔开的每数字分别取出来?

    一、问题的分析

      要想取出被两个*星号隔开的三组数字,关键的问题在于,如何知道并获取两个*星号分别处于字符串中的哪个位置。
      知道两个*星号的位置后,我们就可以使用截取函数将三组数字分别取出来。

    二、获取两个*星号的位置
      获取某个字符在字符串中所处的位置,可以使用SEARCH和SEARCHB函数来查找位置。
      两个函数的语法相同,如下:
      SEARCH(find_text,within_text,start_num)
      SEARCHB(find_text,within_text,start_num)
      不过,两个函数的区别在于,前者在查找的时候,把一个汉字的长度当作一个字符,后者则是以字节的方式来查找,一个汉字当两个字节,所以,一个汉字的长度就为2。一般情况下,在中文英文数字特殊字符混合的字符串中查找,应该使用SEARCH函数。
      把以上两个函数翻译成中文,其语法为:
      SEARCH(要找的字符,包含字符的字符串,从串中的第几个位置开始找)
      SEARCHB(要找的字符,包含字符的字符串,从串中的第几个位置开始找)

    有了如上的函数基础与理论指导,下面,我们开始查找两个星号的位置吧。

    ①第一个*星号的位置
    通过函数=SEARCH("~*",A1)即可获取第一个星号的位置,处于第5位。

    ②第二个*星号的位置
      第二个*星号的位置查找,就比较困难了,公式有点绕口令的感觉。
      总之,公式如下:=

     

    代码如下 复制代码
    SEARCH("~*",A1,SEARCH("~*",A1)+1)


    看到了吧?上述的公式比较复杂,但是,却也很好理解。
    通过公式=SEARCH("~*",A1)可获得第一个位置,那么,再第一个位置的基础上加1,从这个位置开始继续往下找,就可以找到第二星号的位置,所以,公式就是上图中稍微绕口的函数了。

    三、从带有星号的字符串中提取数字
      有了一二的基础,现在,我们该是提取数字了。
    ①提前第一个星左边的数字公式

     

    代码如下 复制代码
    =LEFT(A1,SEARCHB("~*",A1)-1)

    ②提取中间那个数字的公式

     

    代码如下 复制代码
    =MID(A1,SEARCHB("~*",A1)+1,(SEARCHB("~*",A1,SEARCHB("~*",A1)+1))-SEARCHB("~*",A1)-1)

     

     

     

    ==========================result

    {=MID(A1,MATCH(TRUE,ISNUMBER(1*MID(A1,ROW($1:$9),1)),0),COUNT(1*MID(A1,ROW($1:$9),1))+(LEN(A1)-LEN(SUBSTITUTE(A1,".", ""))))}

    展开全文
  • 字母数字字符串中提取数字

    千次阅读 2005-12-19 16:55:00
    字母数字字符串中提取数字在下文中,我将说明以下各种情况中的字符串内提取数字的公式: 当字母字符和数字字符连在一起时,如 abc123 或 678sfr。 当字母字符和数字字符没有连在一起时,如 abc15tni。 问题如何...
    从字母数字字符串中提取数字

    在下文中,我将说明从以下各种情况中的字符串内提取数字的公式:

    • 当字母字符和数字字符连在一起时,如 abc123678sfr
    • 当字母字符和数字字符没有连在一起时,如 abc15tni

    问题

    如何提取字母数字字符串的数字部分。例如:如果单元格 A1 包含的是字符串“abc123”,则将值 123 返回单元格 B1 中。

    解决方案

    此解决方案的基本原理是搜索并返回字母数字字符串中的第一个数字,然后只返回其后的数字。

    算法

    此解决方案包括创建公式以完成下列任务:

    1. 将字母数字字符串分解为单独的字符。
    2. 确定分解后的字符串中是否有数字。
    3. 确定数字在字母数字字符串中的位置。
    4. 计算字母数字字符串中数字的数量。

    我们将分别考虑这些任务,然后将各公式整合在一起以得到最终结果。

    将字母数字字符串分解为单独的字符

    请在此使用 MID 函数。MID 可以根据所指定的字符的数量,从所指定的位置开始,从文本字符串中返回特定数量的字符。此函数的语法是:

    MID(text,start_num,num_chars)

    • Text  文本字符串包含的是要提取的字符。
    • Start_num  要从文本中提取的第一个字符串的位置。文本中第一个字符占据 start_num 1,以此类推。
    • Num_chars  指定要 MID 从文本中返回的字符数量。

    对于我们的示例,公式为:

    =MID(A1,ROW($1:$9),1)

    此公式可以分解字母数字字符串,并且实际上会将字符置于工作表的不同行内。例如,对于字母数字字符串 abc123,其所有 6 个字符都将被分开。

    注释  可将数值 9 适当增大为任何更大的数值,以适应更长的字符串。在此示例中,最大字符串长度为 9。

    值得一提的是,字符串分解之后,“1”、“2”和“3”将被看作文本而不是数字。要将存储为文本的数字转换成数字,请用 1 乘以此公式,例如:

    =1*MID(A1,ROW($1:$9),1)

    确定分解后的字符串中是否有数字

    在此我们将使用 ISNUMBER 函数,此函数可以确定字母数字字符串中是否有数字。公式现在变成了:

    =ISNUMBER(1*MID(A1,ROW($1:$9),1))

    如果字符串中有数字,则结果将为 TRUE,否则结果将为 FALSE。

    确定数字在字母数字字符串中的位置

    现在我们将通过在上一段中提到的分解后的字符串的结果中查找 TRUE 值来确定数字的位置。在此我们将使用 MATCH 函数。经过修改的公式现在变为:

    =MATCH(TRUE,ISNUMBER(1*MID(A1,ROW($1:$9),1)),0)

    要点  必须通过按 Ctrl+Shift+Enter 将此公式作为数组进行输入。

    如果字符串是 abc123,则此公式产生的结果将是 4,这就是字母数字字符串中第一个数字字符的位置。

    计算字母数字字符串中数字的数量

    现在的任务是计算字符串中数字的数量,以确定返回字母数字字符串中第一个数字之后要返回的字符。

    如上所述,可通过用 1 与其相乘,将字母数字字符串中存储为文本的数字转换成数字。例如, =1*MID(A1,ROW($1:$9),1)

    将存储为文本的数字转换成数字之后,可以通过使用 COUNT 函数对其进行计数。可通过输入以下公式计算数字的数量:

    =COUNT(1*MID(A1,ROW($1:$9),1))

    整合各公式

    现在我们将使用 MID 函数把此公式的各部分整合在一起,如以下示例所示。

    =MID(A1,MATCH(TRUE,ISNUMBER(1*MID(A1,ROW($1:$9),1)),0),COUNT(1*MID(A1,ROW($1:$9),1)))

    从本质上说,此问题可陈述为:确定第一个数字在字母数字字符串(在单元格 A1 中)中的位置。返回此数字及其后的数字。

    要将得到的字符转换成数字,请用 1 乘此公式。虽然对此并不严格要求,但如果要对结果执行数学运算,则应该如此操作。下面是要输入单元格 B1 中的最终公式:

    =1*MID(A1,MATCH(TRUE,ISNUMBER(1*MID(A1,ROW($1:$9),1)),0),COUNT(1*MID(A1,ROW($1:$9),1)))

    要点  必须通过按 Ctrl+Shift+Enter 将这些公式作为数组进行输入。

    更多示例

    要进一步测试此公式,请将下图中的数据输入空工作表中的单元格 A1:A7 中。

    字符串转换示例

    将此公式输入单元格 B1 中,然后使用自动填充将此公式复制到单元格 B2:B7 中。(不要忘记按 Ctrl+Shift+Enter。)

    在此值得一提的是,如果字符串是 yur09875reew,而且您使用的是已乘 1 的公式,则列 B 中的结果将是 9875 而不是 09875。因为 0*1=0,所以 0 被忽略了,返回的结果是 9875。如果想得到结果 09875,则不要用 1 乘以整个公式。

    &

    =LOOKUP(9.9999999E+307,--MID(A4,MIN(IF(ISNUMBER(FIND({0,1,2,3,4,5,6,7,8,9},A4)),FIND({0,1,2,3,4,5,6,7,8,9},A4))),ROW(INDIRECT("1:"&LEN(A4)))))

    展开全文
  • Excel如何提取单元格中的部分文字或单元格中的数字 Excel如何提取单元格中的部分文字或单元格中的数字,整理了Excel中所有的提取要求,写成了一公式翻译工具。 支持以下提取方式,输入提取要求...A2中的2"-"...
  • java实现第三届蓝桥杯提取子串

    万次阅读 多人点赞 2019-07-29 20:14:39
    特别地,只含有1字母的串,可以看成是一种模式的镜像串。 一串可以含有许多镜像子串。我们的目标是求一串的最大镜像子串(最长的镜像子串),如果有多最大镜像子串,对称中心靠左的优先选中。例如:...
  • C#字符串中提取所有的数字并获得数字数(正则表达式) using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using ...
  • Go之如何提取数字的各位数?

    千次阅读 2019-03-14 20:31:32
    文章目录Go之如何提取数字的各位数?1. 直接用数学方法进行计算2. 将数字转换成字符串,再进行截取总结 Go之如何提取数字的各位数? 主要有两种方法 直接用数学方法进行计算 将数字转换成字符串,再进行截取 ...
  • 正则表达式字符串中提取数字

    千次阅读 2019-11-24 21:37:19
    python字符串中提取数字 使用正则表达式,用法如下: 解题思路: 代码如下: 匹配指定字符串开头的数字 匹配包含指定字符串开头的数字 匹配时间,17:35:24 匹配时间,20181011 15:28:39 python字符串中提取数字 ...
  • 上篇我们大致了解了如何运用...在开始之前,我们先来看一个字 高 可以看到,这字体是上中下结构,相应的,我们的汉字还有左中右结构等等,我们如何在识别的过程中,不会吧这些特殊结构的字体识别成多? ...
  • python: 字符串中提取数字

    万次阅读 2017-11-01 12:49:29
    python: 字符串中提取数字  如果只想提取正整数,请尝试以下操作: 复制代码 >>> str ="h3110 23 cat 444.4 rabbit 11 2 dog" >>> [int(s) for s in str.split() if s.isdigit()] [23, 11, 2] 我认为...
  • 手写数字识别系统之数字提取

    千次阅读 2016-11-17 16:05:50
    数字分割在数字识别中是一必不可少的关键步骤,只有能够将数字进行准确的提取,才能将其一一识别。数字分割的方法数字分割的方法相当多,主要有以下几种:基于直方图的分割此类方法就是对每行和每列黑色像素数进行...
  • 第三步:在弹出的分享弹窗,选择【图片取】或者【图片翻译】。 标题 第四步:裁剪图片,也可以选择默认。 标题 第五步:提取文字。支持文字编辑、复制、保存、分享、翻译。 标题 至此,大功告成! ...
  • SQL 字符串中提取数字

    千次阅读 2020-05-11 19:49:09
    --patindex函数返回所查内容在字符串中一次出现的内容print patindex('%在%',@Name) --此处会返回3 print patindex('%[0-9]%',@Name) --此处会返回4 --STUFF函数删除指定长度的字符在指定的起始点插入另一组字符...
  • 机器学习第三课——特征提取

    千次阅读 2017-12-04 17:38:43
    这节课主要讲了特征提取,包括 (1)直方图&haar-like特征提取 (2)PCA&LBP特征提取3)HOG
  • Excel 如何提取单元格中的多数值

    千次阅读 2019-10-29 10:08:44
    Excel如何提取单元格中的部分文字或单元格中的数字,整理了Excel中所有的提取要求,写成了一公式翻译工具,适应所有的文字组合方式。 支持以下提取方式,输入...A2中的第2"-"到第3个"-"之间的内容 A2中的第1...
  • 正则表达式是一特殊的字符序列,...利用正则表达式字符串提取数字主要用到下面几函数:(1)compile 函数根据一模式字符串和可选的标志参数生成一正则表达式对象。该对象拥有一系列方法用于正则表达式匹配...
  • 然后点击“Start Converter”,就会开始压缩,在你的字体目录下就会多一文件夹名字为“ttf”(或者“woff”、“eot”)的目录,里面就包含了压缩好的字体文件。 、FontSmaller 感谢q3525721536补充。 官方地址...
  • javascript 正则表达式提取数字使用

    万次阅读 2015-06-03 23:20:36
    javascript 正则表达式提取数字使用 ...reg中的g返回所有的匹配,如果不加g则返回匹配的项 2. 若果没有匹配,则返回一null的list function getNumList(){   var nums = document.getE
  • Excel中提取单元格数字

    千次阅读 2019-06-11 17:06:53
    2.如需提取A栏数字左边前两位,在B1栏输入=left(A1,2),“left”表示需要左边提取数字,“A1”表示你要提取的数字栏,“2”表示你要提取的数字位数,之后按Enter即可。 3.编辑成功后需要提取A栏的数字,只需...
  • @font-face{....} @font-face{....}
  • SQL之提取字符串的数字

    千次阅读 2013-12-05 09:39:45
    一、各种函数介绍 1、patindex函数,反回所查内容在字符串中一次出现的索引 二、封装方法
  • opencv 轮廓提取文字

    千次阅读 2018-07-18 22:05:29
    基于轮廓提取图像文字 内容: 使用你上一篇博客图像透视变换的结果,将A4纸上的线条单独识别出来。 输入图像: 输出图像:  Python使用opencv实现 实验环境:Window下使用Python的Opencv库 通过阈值进行前后...
  • Python提取数字图片特征向量

    万次阅读 2017-11-10 15:40:56
    一步便是提取图片中的特征提取。数据的预处理关系着后面模型的构建情况,所以,数据的处理也是机器学习中非常重要的一部分。下面我就说一下如何提取图片中的特征向量。 图片灰度化  => 当我们拿到一种图片的...
  • 批处理——提取SRT文字中的文字

    千次阅读 2018-12-09 18:02:44
    需求:有同学备考需要,需要看中国慕课里面的视频,除了听还需要做笔记,有特殊情况的还需要背稿子...第三步,新建一Excel表格,并将所有文字复制进去。这里会形成表格形式。这里需要解决的是:删除空格行,删除时...
  • Excel提取单元格中的数字

    千次阅读 2018-03-02 13:56:19
    示例公式:=–mid(a1,5,3) 公式结果为提取A1单元格中从第5位开始3个数字。 2、提取某特定字符串后的数字。示例公式:=-lookup(0,-mid(a1,find(“ABC”,a1)+LEN(“ABC”),row(1:99))) 公式结果为提取A1单元格中...
  • 关于文字的提取

    千次阅读 2006-07-24 13:14:00
    一,PDF转换WORD篇如何提取PDF中的文字,图片等特效我们日常工作学习中有关的学术论文或学术报告或者课程教材等等都以pdf格式保存,如何把它们转换成可编辑的word文档或者提取相应的重要信息。网上有不少 pdf 到 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 684,940
精华内容 273,976
关键字:

从第三个字开始提取