2017-04-10 83 views

回答

2

CTR + H和變化跡象-成任何獨特像@然後更換+@以同樣的方式。

[email protected]@1000使用後: Data/Text to columns/Delimited/Other和類型@

您可以錄製宏有它的自動化。

+0

我不知道這個按鈕。它的工作原理,但是,你必須先將等號(=)替換爲無。否則,你會得到一個錯誤,因爲公式將是無效的。 – z32a7ul

+0

謝謝,先生,它對我來說完美無缺。Thums起來顯示出路。 –

+0

您可以通過將'-'更改爲'@ -'來輕鬆保留號碼前的數字。 –

0

這個子可以做到這一點:

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) 
+0

謝謝先生的幫助。然而,使用上面給出的解決方案,我的工作很容易。 –

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 

它指定結果應該在相同的工作表被寫爲其中該範圍(「G13」)從取,在同一行中(13在這種情況下),並開始2列到右邊,在這種情況下「G」+ 2列=「I」。您可以將「2」修改爲您可能需要的任何偏移量。結果將被分割成與G13中的單獨數字一樣多的列。

+0

謝謝先生的幫助。然而,使用上面給出的解決方案,我的工作很容易。 –

相關問題