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() 中间的数据数据就出来了

  • 相关阅读:
    Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file'
    ptconfigdiff的使用
    freebsd上安装sudo
    vm9.02的序列号
    pttablechecksum
    "Makefile", line 3: Need an operator
    nc的使用
    vs2005自带的水晶报表破解方法
    [vs2008环境]绑定水晶报表的两种方式(Pull和Push)
    .NET环境下水晶报表使用总结
  • 原文地址:https://www.cnblogs.com/swobble/p/9244480.html
Copyright © 2011-2022 走看看