精华内容
下载资源
问答
  • 这个需求简单来说,就是从右向左查找字符出现的首个位置,或从左向右查找字符出现的最后位置,例如:查找“中华人民共和国人民代表大会发言人任免人选”中,最后一个“人”字的位置,直接的查找是做不到的。...

    这个需求简单来说,就是从右向左查找字符出现的首个位置,或从左向右查找字符出现的最后位置,例如:
    查找“普通人民代表大会发言人任免人选”中,最后一个“人”字的位置,直接的查找是做不到的。
    以下是各种公式:(以查找A1单元格中最后一个“@”为例)

    1.直线思路公式:
    =FIND("☆",SUBSTITUTE(A1, "@", "☆", LEN(A1)-LEN(SUBSTITUTE(A1, "@", ""))))
    解释:先通过替换删除法算出原字符串中有多少个“@”,例如n个,然后将第n个“@”替换成“☆”再查找“☆”的位置。

    2.行扩展拆分字符公式:
    =LOOKUP(1,0/(MID(A1,COLUMN(1:1),1)="@"),COLUMN(1:1))
    解释:column(1:1)会自动扩展成第一行的有限列数组(2003版上限256列,2010版上限16384列),然后公式就成了对A1的内容按每个字符拆分成数组,然后比对是否是“@”,是的话会返回逻辑值“True”,用零除运算后,“True”的项会变成“0”,其他变成“#DIV/0”,而对这些项组成的数组查找“1”将等同于查找最后一个“0”,然后给出对应的行号(位置)数字。缺点就是2003版的话字符长度限制大。

    3.列扩展拆分字符公式:
    =LOOKUP(1,0/(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)="@"),ROW(INDIRECT("1:"&LEN(A1))))
    解释:原理同上,只是将行变成列,而且是限制行数为A1内容长度,而行数上限比列数上限大多了。
    同样原理还有两种公式:
    =LOOKUP(LEN(A1),FIND("@",A1,ROW(INDIRECT("1:"&LEN(A1)))))
    原理同上,只是拆分数组的方式是从第n个字符开始查找“@”(小于n的位置值就被忽略),找到就返回位置值,然后对这些位置值组成的数组查找最接近A1内容长度的值,返回。
    类似公式,不过需要Ctrl-Shift-Enter三键输入:
    =MATCH(LEN(A1),FIND("@",A1,ROW(INDIRECT("1:"&LEN(A1)))))
    =MATCH(1,0/(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)="@"))


    4.还是列扩展拆分字符公式,需要Ctrl-Shift-Enter三键输入:
    =MAX(IF(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)="@",ROW(INDIRECT("1:"&LEN(A1)))))
    解释:原理还是同上,不同的是使用了max()。从上面两节的解释可以看到,其实要找也是找最大的位置值,所以可能大多数人一想就会想用Max(),但为什么不行呢——因为max()需要对比数值大小,从而不接受错误值,而lookup()、match()则只是字符匹配,可以略过错误值。为了使用max(),就要用if()来排除错误值项,公式就长了。
    要避开使用if(),那么可以使用类似sumproduct()风格的条件式(注意中间的 * 号),需要Ctrl-Shift-Enter三键输入:
    =MAX((MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)="@")*ROW(INDIRECT("1:"&LEN(A1))))

    5.极致最短公式:
    =-LOOKUP(,-FIND("@",A1,ROW(A:A)))
    解释:依然是列拆分字符公式,但是行数限制省去了,然后将查找到的位置值取相反数,使位置值全变【从大到小】的负数(强调一下,其绝对值就是【从小到大】),再从中查找最后一个位置值(略过错误值),再取一次相反数获得原来的位置值。
    这里要解释一下,为什么相反数了还是查找最后一个位置值?
    原理是这样的,lookup()是假定查找的序列(数组或向量)是升序排列的(不像vlookup和match那样可指定假定降序或假定乱序/精确查找),并在这样的假定下进行二分法查找(详情请看【深入理解LOOKUP:LOOKUP函数的查找原理】,返回小于等于目标值的项。因此,lookup()相当于是假定查找序列最大的值在最后,如果找不到和目标值相同的值,那么其返回的就是最后一个非错误值。

    6.另类思路公式,需要Ctrl-Shift-Enter三键输入:
    =TEXT(LEN(A1)-MATCH("@",LEFT(RIGHT("@"&A1,ROW($1:$99))),)+1,"[>];")

    展开全文
  • 就业与择业的角度来讲,计算机相关专业的大学生从事oracle方面的技术是职业发展中的最佳选择。 其一、就业面广:全球前100强企业99家都在使用ORACLE相关技术,中国政府机构,大中型企事业单位都能有ORACLE技术的...
  • 实例036 使窗体标题栏文字对齐 39 实例037 没有标题栏但可以改变大小的窗口 39 1.11 设置窗体位置 40 实例038 设置窗体在屏幕中的位置 40 实例039 始终在最上面的窗体 41 1.12 设置窗体大小 42 实例...
  • 面试题20:顺时针打印矩阵:首先需要判断每一步开始是的坐标点是否满足小于行数的一半且小于列数的一半,在最后一圈中,可能出现仅能向走一行,仅能向走一行向下走一列,向走一行向下走一列向左走一行,能走...
  • javascript文档

    2009-08-11 10:44:24
    indexOf 方法 返回在 String 对象中第一次出现子字符串的字符位置。 不相等运算符 (!=) 比较两个表达式,看是否不相等。 Infinity 属性 返回 Number.POSITIVE_INFINITY 的初始值。 input 属性 返回进行查找的...
  • JScript 语言参考

    2009-05-28 08:53:39
    lastIndex 属性 返回在字符串中找到的最后一个成功匹配的字符位置。 lastIndexOf 方法 返回在 String 对象中最后出现子字符串的位置。 lastMatch 属性 ($) 任何正则表达式搜索中返回最后匹配的字符。 lastParen...
  • 微软JavaScript手册

    2009-04-08 22:54:53
    lastIndex 属性 返回在字符串中找到的最后一个成功匹配的字符位置。 lastIndexOf 方法 返回在 String 对象中最后出现子字符串的位置。 lastMatch 属性 ($) 任何正则表达式搜索中返回最后匹配的字符。 lastParen...
  • linux vi 常用命令

    2012-09-18 12:55:47
    Ctrl+u 后翻半屏 i 在光标位置前插入字符 a 在光标所在位置的后一个字符开始增加 o 插入新的一行,行首开始输入 ESC 输入状态退至命令状态 x 删除光标后面的字符 #x 删除光标后的#个字符 X (大写X),删除光标...
  • 用连字符“&”来合并文本怎样把不同格式不同位置的内容合并到一个单元格内 把不同单元格的内容合到一个单元格里 合并与拆分 合并不同单元格的内容 关于文字在表格中的组合 求拆解合并公式 如何把字母和数字分开? 把...
  • 符以及公式中包含的某字符),也可以将搜索结果写入到一新的工作表中以备查。 【工具箱选项】 集成工具箱的基本选项设置。基本分为<显示设置区><隐藏功能区><自动备份区><工作表设置区><功能窗体显示区>。其中功能...
  • 5.5.6 SEARCH——以字符为单位不区分大小写地查找指定字符位置 189 5.5.7 SEARCHB——以字节为单位不区分大小写地查找指定字符位置 191 5.5.8 SUBSTITUTE——以指定文本进行替换 191 5.6 删除文本中的字符 ...
  • EXCEL函数公式集

    热门讨论 2010-03-16 03:26:38
    用连字符“&”来合并文本怎样把不同格式不同位置的内容合并到一个单元格内 把不同单元格的内容合到一个单元格里 合并与拆分 合并不同单元格的内容 关于文字在表格中的组合 求拆解合并公式 如何把字母和数字分开? 把...
  • 实例143 从字符串中分离文件路径、文件名及其扩展名 实例144 进行文本加密与解密 实例145 对字符串进行加、减、乘、除计算 实例146 统计字符个数 实例147 实现字节数组和字符串的相互转换 实例148 用VB分离出...
  • 实例143 从字符串中分离文件路径、文件名及其扩展名 实例144 进行文本加密与解密 实例145 对字符串进行加、减、乘、除计算 实例146 统计字符个数 实例147 实现字节数组和字符串的相互转换 实例148 用VB分离出...
  • EXCEL集成工具箱V6.0

    2010-09-11 01:44:37
    符以及公式中包含的某字符),也可以将搜索结果写入到一新的工作表中以备查。 【工具箱选项】 集成工具箱的基本选项设置。基本分为<显示设置区><隐藏功能区><自动备份区><工作表设置区><功能窗体显示区>。其中功能...
  • 符以及公式中包含的某字符),也可以将搜索结果写入到一新的工作表中以备查。 【EXCEL比较工具】 打开并比较任意两个EXCEL文档工作表内容之间的差异,可对比出哪些内容作了修改。 【工具箱选项】 集成工具箱的基本...
  • 符以及公式中包含的某字符),也可以将搜索结果写入到一新的工作表中以备查。 【工具箱选项】 集成工具箱的基本选项设置。基本分为<显示设置区><隐藏功能区><自动备份区><工作表设置区><功能窗体显示区>。其中功能...
  • 符以及公式中包含的某字符),也可以将搜索结果写入到一新的工作表中以备查。 【工具箱选项】 集成工具箱的基本选项设置。基本分为<显示设置区><隐藏功能区><自动备份区><工作表设置区><功能窗体显示区>。其中功能...
  • 【计算表达式】:将表达式转换成值(包括混合字符串中取出的表达式) <══════════════════┤ 函数功能介绍 ├════════════════════> 函数名称:sumifcol 函数功能与...
  • delphi 开发经验技巧宝典源码

    热门讨论 2010-08-12 16:47:23
    0162 判断字符串中的字符是否大写 106 0163 判断字符串中是否有小写字母 107 0164 判断字符串中是否有指定的字符 107 0165 判断字符是否可以转换成整数 108 0166 判断字符中是否有汉字 108 0167 判断...
  • 0162 判断字符串中的字符是否大写 106 0163 判断字符串中是否有小写字母 107 0164 判断字符串中是否有指定的字符 107 0165 判断字符是否可以转换成整数 108 0166 判断字符中是否有汉字 108 0167 判断...
  • 0162 判断字符串中的字符是否大写 106 0163 判断字符串中是否有小写字母 107 0164 判断字符串中是否有指定的字符 107 0165 判断字符是否可以转换成整数 108 0166 判断字符中是否有汉字 108 0167 判断...
  • 0162 判断字符串中的字符是否大写 106 0163 判断字符串中是否有小写字母 107 0164 判断字符串中是否有指定的字符 107 0165 判断字符是否可以转换成整数 108 0166 判断字符中是否有汉字 108 0167 判断...
  • 0162 判断字符串中的字符是否大写 106 0163 判断字符串中是否有小写字母 107 0164 判断字符串中是否有指定的字符 107 0165 判断字符是否可以转换成整数 108 0166 判断字符中是否有汉字 108 0167 判断...
  • 0162 判断字符串中的字符是否大写 106 0163 判断字符串中是否有小写字母 107 0164 判断字符串中是否有指定的字符 107 0165 判断字符是否可以转换成整数 108 0166 判断字符中是否有汉字 108 0167 判断...
  • 9.8将一个5×5的矩阵中最大的元素放在中心,4个角分别放在4个最小的元素(按从左上到下的顺序,依次从小到大存放),写一个函数实现之,并用main函数调用。 78 10.9在主函数中输入10个等长的字符串。用另一...
  • 正则表达式

    2014-12-03 14:51:39
    定义否定字符尖时,要将一个 ^ 符号作为从左中括号算起的第 一个字符.正则表达式的集合是 / [a-zA-z0-9] / . 由于某些字符类非常常用,所以JavaScript的正则表达式语法包含一些特殊字符和转义序列来表示这些常用的...
  • 【计算表达式】:将表达式转换成值(包括混合字符串中取出的表达式) <══════════════════┤ 函数功能介绍 ├════════════════════> 函数名称:sumifcol 函数功能与参数...
  • 本书侧重于函数的实战应用,共分12章,前10章分别介绍了数学函数、统计函数... 215 查找某销售员某月的销售业绩 415 216 制作员工工牌 416 217 查询最后入职的员工 418 218 查询某员工是否为本公司人员 419 219...
  • C#全能速查宝典

    热门讨论 2014-04-26 16:16:27
    1.1.18 ReadLine方法——当前流中读取一行字符 20 1.1.19 typeof运算符——获得系统原型对象的类型 21 1.1.20 using关键字——引入命名空间 22 1.1.21 WriteLine方法——写入流 23 1.2 数学方法类——Math 25 ...

空空如也

空空如也

1 2 3 4 5 6
收藏数 113
精华内容 45
关键字:

从右向左查找某字符位置