如何将Excel单元格中的数字公式拆分为单个列?

时间:2017-04-10 08:34:45

标签: excel

我需要帮助来解决问题: Excel单元格中的公式是这样的 - > = 20000-17000 + 1000,我需要将数字分成不同的列,如下所示 - > 20000 | 17000 | 1000,删除+ / - 没问题,我可以没有它们。因此无法找到任何帮助。 提前感谢。example given

3 个答案:

答案 0 :(得分:2)

CTR + H并将签名-更改为@之类的唯一身份,然后将+替换为@

使用20000@17000@1000后: Data/Text to columns/Delimited/Other并输入@

您可以录制宏以使其自动化。

答案 1 :(得分:0)

这个Sub可以做到:

Public Sub SplitSum(rngInput As Range, rngOutputStart As Range)
    Dim varParts As Variant: varParts = Split(Replace(Replace(Mid(rngInput.Formula, 2), "-", "|"), "+", "|"), "|")
    Dim c As Long: For c = LBound(varParts) To UBound(varParts)
        rngOutputStart.offset(0, c - LBound(varParts)).Value = CDbl(varParts(c))
    Next c
End Sub

你可以像这样使用它:

SplitSum ActiveCell, ActiveCell.Offset(0, 1)

答案 2 :(得分:0)

此功能将在您的号码前保留标志,并且只是为了让您在必要时可以轻松访问以进一步调整。

Sub SumsToColumns(Rng As Range)

    Dim RngVal As String
    Dim Vals() As String
    Dim n As Integer

    RngVal = Trim(Rng.Cells(1).Formula)
    If Len(RngVal) Then
        RngVal = Mid(Replace(RngVal, "+ ", "+"), 2)
        RngVal = Replace(RngVal, " +", " +")
        RngVal = Replace(RngVal, "- ", "-")
        RngVal = Replace(RngVal, "-", " -")

        Do
            n = Len(RngVal)
            RngVal = Replace(RngVal, "  ", " ")
        Loop While Len(RngVal) < n

        Vals = Split(RngVal)
        For n = 0 To UBound(Vals)
            With Rng
                .Worksheet.Cells(.Row, .Column + n + 2).Value = Vals(n)
            End With
        Next n
    End If
End Sub

您可以使用以下行来调用此函数: -

SumsToColumns(Range("G13"))

其中“G13”是您可以从循环遍历列中所有单元格的简单过程中提取的范围。请注意代码中的以下行。

.Worksheet.Cells(.Row, .Column + n + 2).Value

它指定结果应该写在与取自Range(“G13”)的同一工作表中,在同一行(本例中为13)并向右开始2列,在这种情况下“ G“+ 2列=”I“。您可以将“2”修改为您可能需要的任何偏移量。结果将被拆分为多个列,因为G13中有单独的数字。