分隔单元格中的数据,并复制到另一列

我有一个名为Description的列,其中描述了费用和费用date。 我从中得到的文件没有正确的开销date。

我想分开数据并将date复制到费用date列,并将剩余的描述粘贴到描述列。

我脑海中的逻辑是复制数据并粘贴到隐藏的列,并使用此代码分离。

Sub text2column() selection.TextToColumns Destination:=Range("S1"), DataType:=xlFixedWidth, _ FieldInfo:=Array(Array(0, 3), Array(6, 1)), TrailingMinusNumbers:=True 

但是我需要从具有资源名称的行(例如Name1,Name2,Name3等)开始粘贴/覆盖,并留下不可用的资源,并且不触及对不可用资源的描述。

在这里输入图像说明

我喜欢你如何基于当前的Application.Selection属性你的进程。 我已经有了一些样板框架来处理这个答案中的选定单元格。

 Sub splitDescription() Dim tmp As String, rng As Range With Selection For Each rng In .Areas With rng tmp = Cells(.Cells(1).Row, 16383).Address .TextToColumns Destination:=.Parent.Range(tmp), DataType:=xlFixedWidth, _ FieldInfo:=Array(Array(0, 3), Array(6, 1)) .Offset(0, -2) = .Parent.Range(tmp).Resize(.Rows.Count, 1).Value .Cells = .Parent.Range(tmp).Resize(.Rows.Count, 1).Offset(0, 1).Value .Parent.Range(tmp).Resize(1, 2).EntireColumn.Clear End With Next rng End With End Sub 

我已经通过Range.Areas属性添加了单车。 这将允许您循环通过当前select中不连续的单元格范围(例如A2:A10,A15:A20)。 如果您select了一个单元格块,则它具有1的Areas.Count属性,因此没有任何不利之处 。

非常感谢你为这个美妙的代码Jeeped。 我解决了这个问题,我将如何跳过更新具有“不可用”值的行,并提出这个代码。

 Sub splitDescription() Dim tmp As String, rng As Range With selection For Each rng In .Areas With rng tmp = Cells(.Cells(1).Row, 16383).Address .TextToColumns Destination:=.Parent.Range(tmp), DataType:=xlFixedWidth, _ FieldInfo:=Array(Array(0, 3), Array(6, 1)) .Offset(0, -2) = .Parent.Range(tmp).Resize(.Rows.Count, 1).Value .Cells = .Parent.Range(tmp).Resize(.Rows.Count, 1).Offset(0, 1).Value .Parent.Range(tmp).Resize(1, 2).EntireColumn.Clear End With Next rng End With Range("I4").Select End Sub Sub findresource() Range("C6").Select Do While ActiveCell.Value = "Not Available" selection.Offset(1, 0).Select Loop selection.Offset(0, 5).Select Range(selection, selection.End(xlDown)).Select Call splitDescription End Sub