Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在excel中展开数据_Excel - Fatal编程技术网

在excel中展开数据

在excel中展开数据,excel,Excel,我想扩展下面的值。任何人都有一个好的公式或流程,我想要的格式是000.000.000.000,可以是或多或少的周期,比如000.000.000 (开始)A2单元 (公式)B2单元 *我正在使用excel 2016 谢谢大家! 如果您有Office 365 Excel,则可以使用TEXTJOIN作为数组公式: =TEXTJOIN(".",TRUE,TEXT(--TRIM(MID(SUBSTITUTE(A1,".",REPT(" ",99)),(ROW($A$1:INDEX(A:A,LEN(A1)-

我想扩展下面的值。任何人都有一个好的公式或流程,我想要的格式是000.000.000.000,可以是或多或少的周期,比如000.000.000

(开始)A2单元

(公式)B2单元


*我正在使用excel 2016


谢谢大家!

如果您有Office 365 Excel,则可以使用TEXTJOIN作为数组公式:

=TEXTJOIN(".",TRUE,TEXT(--TRIM(MID(SUBSTITUTE(A1,".",REPT(" ",99)),(ROW($A$1:INDEX(A:A,LEN(A1)-LEN(SUBSTITUTE(A1,".",""))+1))-1)*99+1,99)),"000"))
作为数组公式,必须在退出编辑模式时使用Ctrl-Shift-Enter而不是Enter确认


如果您没有Office 365,则需要单独分析每个部分:

=MID(
            IF(ISNUMBER(--TRIM(MID(SUBSTITUTE(A1,".",REPT(" ",99)),1,99))),"." & TEXT(--TRIM(MID(SUBSTITUTE(A1,".",REPT(" ",99)),1,99)),"000"),"") &
            IF(ISNUMBER(--TRIM(MID(SUBSTITUTE(A1,".",REPT(" ",99)),99,99))),"." & TEXT(--TRIM(MID(SUBSTITUTE(A1,".",REPT(" ",99)),99,99)),"000"),"") &
            IF(ISNUMBER(--TRIM(MID(SUBSTITUTE(A1,".",REPT(" ",99)),198,99))),"." & TEXT(--TRIM(MID(SUBSTITUTE(A1,".",REPT(" ",99)),198,99)),"000"),"") &
            IF(ISNUMBER(--TRIM(MID(SUBSTITUTE(A1,".",REPT(" ",99)),297,99))),"." & TEXT(--TRIM(MID(SUBSTITUTE(A1,".",REPT(" ",99)),297,99)),"000"),"") &
            IF(ISNUMBER(--TRIM(MID(SUBSTITUTE(A1,".",REPT(" ",99)),396,99))),"." & TEXT(--TRIM(MID(SUBSTITUTE(A1,".",REPT(" ",99)),396,99)),"000"),"")
,2,99)
您需要添加一个新的IF。对于尽可能多的零件,此IF假设零件的最大数量为5


或者,您可以使用此自定义项,该自定义项在提供的分隔符上拆分,然后使用提供的数字格式格式化每个零件,并将其重新组合在一起:

Function MyFormat(str As String, delim As String, pat As String) As String
Dim strArr() As String
strArr = Split(str, delim)

Dim i As Long
For i = LBound(strArr) To UBound(strArr)
    If IsNumeric(strArr(i)) Then
        strArr(i) = Format(Val(strArr(i)), pat)
    End If
Next i
MyFormat = Join(strArr, delim)
End Function
然后,您可以从工作表中将其用于:

=MyFormat(A1,".","000")

这里有一个用户定义的函数,可以处理任何长度。这应该粘贴到标准的公共模块代码表中(Alt+F11,Insert,module)


是否总是用句点分隔4个数字字符,如
N.N.N
?Excel的哪个版本?可以使用四个基本的文本解析公式缝合在一起创建一个简单但不雅观的公式。就我个人而言,我会使用split编写一个自定义项,以保持工作表整洁。总是用句号分隔,但不总是用4个数字句号分隔。我也在使用excel 2016。我在使用excel 2016非常感谢!
Function MyFormat(str As String, delim As String, pat As String) As String
Dim strArr() As String
strArr = Split(str, delim)

Dim i As Long
For i = LBound(strArr) To UBound(strArr)
    If IsNumeric(strArr(i)) Then
        strArr(i) = Format(Val(strArr(i)), pat)
    End If
Next i
MyFormat = Join(strArr, delim)
End Function
=MyFormat(A1,".","000")
Option Explicit

Function paddZeroes(str As String, _
                    Optional padding As Long = 3)
    Dim i As Long, tmp As Variant

    tmp = Split(str, Chr(46))

    For i = LBound(tmp) To UBound(tmp)
        tmp(i) = Format(CLng(tmp(i)), String(padding, "0"))
    Next i

    paddZeroes = Join(tmp, Chr(46))

End Function