平日学习点滴

Excel从右向左查找

今天看一个小问题,是前几天遇到的,就是要在Excel里面实现从右向左查找。比如给定字符串“abc,defg,hi,jkl”,需要找到最右一个逗号的位置(即12),或者最右一个逗号右边的部分(即“jkl”)。

Excel里面字符串查找用的FIND函数,只能从左向右(可以指定起始位置)地进行字符串查找。如果想要找到最右边的待查字符串,就要稍微费点儿劲儿了。为了方便起见,下面称待查字符串为分隔符。

如果分隔符的个数是已知且确定的(比如IP地址中的小数点),可以通过多个FIND函数嵌套来实现。但这个其实是从左到右查找第n个。如果分隔符的个数不确定,这个方法就不太合适的。

我的处理方法是这样的,假设单元格A1存放着包含分隔符的完整字符串(如上面提到的“abc,defg,hi,jkl”),那么查找最右一个逗号的公式为:

=FIND(CHAR(1),SUBSTITUTE(A1,",",CHAR(1),LEN(A1)-LEN(SUBSTITUTE(A1,",",""))))

这个公式的结果显然是12。

看起来很复杂,其实一步步拆解开并不是太难,基本的原理是这样的:

  1. SUBSTITUTE(A1,",",""):把原字符串中的逗号全部删除(替换成空字符串),得到临时字符串text1;

  2. LEN(A1)-LEN(text1):用原字符串的长度减去text1的长度,即可知道原字符串中总共有多少个逗号,num2;

  3. SUBSTITUTE(A1,",",CHAR(1),num2):利用SUBSTITUE函数,把原字符串中的最后一个逗号替换成特殊字符CHAR(1),得到临时字符串text3;

  4. FIND(CHAR(1),text3):在text3中查找特殊字符CHAR(1),其位置就是原字符串中最后一个逗号的位置pos。

真是一个奇妙的方法。

找到位置后,要取出左边或者右边的内容就很简单了,公式分别是(用pos代替那个复杂的FIND函数):=LEFT(A1,pos-1)=RIGHT(A1,LEN(A1)-pos)

补充:

上面那个公式只是适用于单个字符的查找,如果分隔符是多个字符,就需要稍微修改一下。假设单元格B1里面存放着分隔符本身,那么公式可以修改为:

=FIND(CHAR(1),SUBSTITUTE(A1,B1,CHAR(1),(LEN(A1)-LEN(SUBSTITUTE(A1,B1,"")))/LEN(B1)))

唯一的变化就是上述的第2步,原字符串的长度减去text1的长度后,要除以分隔符本身的长度,才是分隔符的个数。

在这种情况下,取(最右分隔符)右边的子串的公式也要相应地修改为:=RIGHT(A1,LEN(A1)+1-LEN(B1)-pos)

转载于:https://blog.51cto.com/snowdream/1418455

Excel从右向左查找相关推荐

  1. Python从右向左查找字符串(倒序查找 从右往左)

    2021-10-14更新: 其实有一个很简单的内置函数,就是rfind,示例如下: txt = '0123456789' print(txt.rfind('8')) # 输入结果为8,也就是查找到的位 ...

  2. 区间子数组个数 - LeetCode 795 - 从左向右与从右向左查找

    一.问题描述 给你一个整数数组 nums 和 两个整数:left 及 right .找出 nums 中连续.非空且其中最大元素在范围 [left, right] 内的子数组,并返回满足条件的子数组的个 ...

  3. # 字符串从右往左查找_python数据类型及字符串(2)

    八月如期来临,最棒的就是自己不断的坚持着某一件事.昨天晚上的我攻克并战胜了自己,继续着健身.八月,加油! 回顾重点: 1. 变量 2. 变量作用 3. 变量命名 目录: 1. 数据类型 ## 算术运算 ...

  4. # 字符串从右往左查找_字符串匹配(搜索,查找)算法

    (一)前言 所谓的字符串匹配就是在一个长字符串(可称文本T)中找一个短字符串(可称模式P),看长字符串中是否存在短字符串,若存在则返回出现的第一个位置,若不存在则返回一个标记.字符串搜索算法有很多,比 ...

  5. 快速排序为何先要从右向左查找的原因

    假设我们现在对"6 1 2 7 9 3 4 5 10 8"这个10个数进行排序.首先在这个序列中随便找一个数作为基准数.为了方便,就让第一个数6作为基准数吧.接下来,需要将这个序列 ...

  6. 1.4 Codesys在字符串1查找字符串2的位置(从左向右、从右向左)功能

    1.在长字符串String1中的指定位置开始,从左向右查找短字符串String2最先出现的位置.具体功能代码如下: FUNCTION FINDP : INT VAR_INPUTInString1 : ...

  7. 从右往左截取字符_EXCEL公式以指定分隔符从右往左截取字符

    从A串中提取从"."开始的字符串B,可以使用find函数来对"."的首次出现进行定位,这类似于各种语言中的indexOf功能,find是从左往右查找的,在EXC ...

  8. 单词迷阵游戏就是从一个10x10的字母矩阵中找出目标单词,查找方向可以从左往右、从右往左、从上往下或者从下往上。例如下面的迷阵中包含quot等单词。

    单词迷阵游戏就是从一个10x10的字母矩阵中找出目标单词,查找方向可以从左往右.从右往左.从上往下或者从下往上.例如下面的迷阵中包含quot等单词. rmhlzxceuq bxmichelle mnn ...

  9. [Excel]如何使Vlookup由右往左找? 或使Hlookup由下往上找?

    Vlookup和Hlookup函數常用於查找資料,其中Vlookup顧名思義用於資料水平查找,而Hlookup則用於垂直查找.同時Vlookup的初始設置為由左往右尋找符合條件的資料,Hlookup的 ...

最新文章

  1. pytorch 初始化权重
  2. 实验三进程调度模拟程序
  3. js url传值中文乱码之解决之道
  4. SpringBoot中Mybatis打印sql日志
  5. Rocketmq集群架构图
  6. 彻底了解JS中难懂的闭包
  7. [译]预留位置队列PRQueue:多线程程序中消息输入队列和消息输出队列保持同序...
  8. mysql索引的类型和查看、添加、修改、删除索引的方法介绍
  9. 6 功能4:文章详情页、点赞功能
  10. python人脸融合_用Python玩人脸融合,想知道你未来孩子的长相?(附代码)
  11. [转]截获asp.net http输出流自己做处理
  12. 一个类似权限挂载的设计
  13. adb shell 之 screenrecord
  14. Python 入门 Day5
  15. mysql多表in查询_MySQL多表查询
  16. 矩形已知三个点的坐标,求第四个点的坐标
  17. C专家编程 第11章 你懂得C,所以C++不再话下 11.1 初识OOP
  18. 大量STATSPACK数据统计分析
  19. css背景分割两种颜色
  20. 《软件开发与创新:ThoughtWorks文集:续集》

热门文章

  1. 小程序页面之间的跳转方法
  2. Codeforces 948D Perfect Security
  3. Oracle 将一个查询结果值动态赋值给一个变量
  4. [转]C++操作oracle数据库
  5. Q91:真实地模拟透明材质(Realistic Transparency)(2)——Triangle Meshes
  6. 机器学习-决策树(XGBoost、LightGBM)
  7. Springboot构建Echarts数据可视化
  8. 如何避免大数据分析的失误
  9. 可视化设计的时候应该注意什么
  10. 队列的基本概念介绍以及典型应用示例