我已经在这里解决了通过 TextToColumns 函数将文本拆分为列的问题。但现在我遇到了一个问题,我必须将此 Excel 设置为共享,并且此功能对我不起作用,能否将此功能替换为可在共享工作簿中使用的其他功能? 如果有任何建议我将非常感激
Private Sub Generate_Click()
Dim destRng As Range
If Selection.Columns.Count = 1 And ActiveCell.Column = 7 Then
'Set destRng = Range("G4") instead this
Selection.TextToColumns , Destination:=Range("H" & Selection.Row), _
DataType:=xlDelimited, Other:=True, OtherChar:="-", Other:=False, OtherChar:="_"
Else
MsgBox "Mark only column G"
End If
End Sub
分隔符是破折号“-”
编辑:
是否可以修改此代码以在所有选定的单元格上运行?因为现在它只适用于一个选定的单元格:
Private Sub Generate_Click()
Dim splitVals As Variant
Dim totalVals As Long
If Selection.Columns.Count = 1 And ActiveCell.Column = 7 Then
splitVals = Split(ActiveCell.Value, "-")
totalVals = UBound(splitVals)
Range(Cells(ActiveCell.Row, ActiveCell.Column + 1), Cells(ActiveCell.Row, ActiveCell.Column + 1 + totalVals)).Value = splitVals
Else
MsgBox "Mark only column G"
End If
End Sub
非常感谢您的帮助:)
如果您使用的是 Excel 365,您可以使用
TEXTSPLIT
公式来实现拆分,然后用其值替换公式:
Private Sub Generate_Click()
If Selection.Columns.Count = 1 And ActiveCell.Column = 7 Then
Dim rgTarget As Range, c As Range, rgValues As Range
Set rgTarget = ActiveSheet.Range("H" & Selection.Row).Resize(Selection.Rows.Count)
With rgTarget
.Formula2 = "=TEXTSPLIT(G" & Selection.Row & ",""-"")"
Set rgValues = .Resize(, .CurrentRegion.Columns(1).Column + .CurrentRegion.Columns.Count - .Column) 'get range to which the formula spills
rgValues.Value = rgValues.Value ' replace formula by value
End With
Else
MsgBox "Mark only column G"
End If
End Sub