zoukankan      html  css  js  c++  java
  • Excel-根据分隔符将一个单元格的内容分发到多个单元格

    A1

    1;2;3;4;5;6;7;;;;10

    现在想将A1根据";"进行分离,再讲分离出来的一个值填到一个单元格中

    =TRIM(MID(SUBSTITUTE($A$12,";",REPT(" ",99)),(ROW(A1)-1)*99+1,99))

    次值为1

    =TRIM(MID(SUBSTITUTE($A$12,";",REPT(" ",99)),(ROW(A1)-1+1)*99+1,99))

    次值为2

    =TRIM(MID(SUBSTITUTE($A$12,";",REPT(" ",99)),(ROW(A1)-1+2)*99+1,99))

    次值为3

    TRIM=去掉空格

    MID=从一个文本字符串的指定位置开始,截取指定数目的字符。MID(A1,4,3),表示从A1单元格中的第4个字符开始提取,提取字符为3个

    SUBSTITUTE=如果需要在一个文字串中替换指定的文本,可以使用函数SUBSTITUTE.

    REPT函数可以按照定义的次数重复显示文本,相当于复制文本

    ROW=返回所选择的某一个单元格的行数。

        

    实例
    如果A1=学习的革命、A2=电脑
    则公式=SUBSTITUTE(A1,"的革命",A2,1)
    返回“学习电脑”

    REPT("*-", 3) // 字符串显示 3 次 *-*-*-
    =REPT("-",10) //短划线显示 10 次 ----------

    ------------------------------------------------------------------------------------------------------------------

    发现使用过程中上面的公式有时不准确,下面另外一种方法

    G6:

    0.1;2.56;一生一世;D;E;F;G;H

    0.1=

    =MID(G6,1,FIND("@",SUBSTITUTE(G6,";","@",1))-1)

    2.56=

     =MID(G6,FIND("@",SUBSTITUTE(G6,";","@",1))+1,FIND("@",SUBSTITUTE(G6,";","@",2))-FIND("@",SUBSTITUTE(G6,";","@",1))-1)

    一生一世=

    =MID(G6,FIND("@",SUBSTITUTE(G6,";","@",2))+1,FIND("@",SUBSTITUTE(G6,";","@",3))-FIND("@",SUBSTITUTE(G6,";","@",2))-1)

    原理:

    由于find只能获取该字符串出现的第一个位置

    0.1@2.56;一生一世;D;E;F;G;H    找到第一个;位置

    0.1;2.56@一生一世;D;E;F;G;H    找到第二个;位置

    Mid() 中间的数据数据就出来了

  • 相关阅读:
    c#对文件的读写
    win form treeview添加节点
    泛型的学习
    委托学习
    C#连接Oracle数据库解决报错(需要安装Oracle客户端软件8.1.7)的问题
    C#和Python 图片和base64的互转
    反射学习:(System.Reflection)
    objectivec:继承
    prism关键概念:
    三层架构的学习感悟(一)
  • 原文地址:https://www.cnblogs.com/swobble/p/9244480.html
Copyright © 2011-2022 走看看