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