下面的代码拆分然后转置数据,但目标单元格也是正在计算的单元格。因此,它将覆盖单元格中的公式。
我需要保持在单元格中的公式(S),并在不同的单元格(相同的列,不同的行)的结果开始。(见屏幕截图。)
详情:
我有一个来自系统的报表,其中单个单元格中包含无数个回车符(有些单元格包含2000多个回车符)。
我需要将单元格内容拆分为一个垂直列表以进行分析,但我需要列表从列中较低的单元格开始。
包含需要拆分的回车内容的单元格区域:"h2:aa2"。
开始创建列表的目标单元格:"H8:aa8"
代码将覆盖单元格中的公式。
1.如何将目标单元格语言添加到代码中?
1.如何删除目标单元格中的空行?
即在结果之间有一个额外的回车。见屏幕截图。
我可以稍后使用独特的公式来做这件事,但我很希望不必这样做。
代码:
Sub Splitcelldatawithcarriagereturnformultiplecolumns()
'VBA code to split out cell that has countless data with carriage returns
'Separates on carriage return, then transposes data. Result = vertical list"
Dim Rng As Range
Dim WorkRng As Range
On Error Resume Next
Set WorkRng = Range("h2:aw2")
For Each Rng In WorkRng
lLFs = VBA.Len(Rng) - VBA.Len(VBA.Replace(Rng, vbLf, ""))
If lLFs > 0 Then
Rng.Offset(1, 0).Resize(lLFs).Insert shift:=xlShiftDown
Rng.Resize(lLFs + 1).Value = Application.WorksheetFunction.Transpose(VBA.Split(Rng, vbLf))
End If
Next
End Sub
我失败的地方:在For Each Rng In WorkRng
部分拆分和转置数据时,在无数位置都标识了Rng
。我尝试将Rng
替换为"H8:AA8",但不起作用。
我认为我需要定义目标区域,然后分配它(我也发现了许多不同的方法来删除回车,但它们似乎更麻烦(我不确定这是否是最有效的代码,但它确实有效)。
1条答案
按热度按时间iklwldmw1#
**EDIT:**添加了工作表循环和标签名检查,并清除先前的输出
你可以这样做:
你的第二个场景: