我有一个名为描述的列,其中包含费用说明和费用日期。我从中获取的文件没有正确的费用日期。
我想分隔数据并将日期复制到费用日期列,然后将其余说明粘贴到说明列。< / p>
我的想法是复制数据并粘贴到隐藏列,并使用此代码进行分离。
Sub text2column()
selection.TextToColumns Destination:=Range("S1"), DataType:=xlFixedWidth, _
FieldInfo:=Array(Array(0, 3), Array(6, 1)), TrailingMinusNumbers:=True
但是我需要从具有资源名称的行(例如Name1,Name2,Name3等)开始粘贴/覆盖,并保留不可用资源,而不是触及描述不可用资源。
答案 0 :(得分:1)
我喜欢你的流程基于当前的Application.Selection属性。我已经有了一些样板框架来处理this answer中的选定单元格。
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 property添加了骑行。这将允许您循环当前选择中不连续的单元格范围(例如A2:A10,A15:A20)。如果您选择了一个单元格块,则它的Areas.Count属性为1,因此没有任何损害。
答案 1 :(得分:1)
非常感谢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