如何将Excel单元格中的数字公式分割成单独的列?

我需要帮助解决这个问题:在Excel单元格中的公式是这样的 – > = 20000-17000 + 1000,我需要在不同的列像这样 – > 20000 | 17000 | 1000,删除+ / – 没有问题,我可以没有他们的生活。 无法find任何帮助,因此张贴在这里。 提前感谢。 给出的例子

CTR + H和改变符号-变成任何独特的@然后用相同的方式replace成@

使用20000@17000@1000Data/Text to columns/Delimited/Other并键入@

您可以录制一个macros使其自动化。

这个子可以做到这一点:

 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) 

这个function会保留你的号码前的符号,并且只是简单地写下来,以便于你在需要的时候轻松地进行调整。

 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 

它规定结果应该写在与同一行(本例中为13)相同的范围(“G13”)和从右边开始2列的同一工作表中,在本例中为“G”+ 2栏=“我”。 您可以将“2”修改为您可能需要的任何偏移量。 结果将被分割成与G13中的单独数字一样多的列。