我如何将文本转换为列代码块成循环?

时间:2018-11-14 11:41:35

标签: excel vba excel-vba

我反复使用以下代码来文本化某些数据列。我要从(“ A:A”)到(“ DM:DM”)重复这些行。有时,我要在其上运行的文件的列数少于该数量。即使是这种情况,我也使代码可以文本化以达到最大列数。但这会使执行速度变慢。我想将其转换为一个循环,如果下一列为空白,则执行将跳至下一个块。

好人能建议我这样做吗?

@CucumberOptions

谢谢!

2 个答案:

答案 0 :(得分:0)

要检查一列是否有任何非空白单元格(公式或值),可以采用以下条件:

If Range("A:A").SpecialCells(xlCellTypeBlanks).CountLarge < Range("A:A").CountLarge Then

这将使您确定是否以任何方式填充了列,并且仅在填充列的情况下才执行代码。

请注意,如果 entire 列为非空白,则对SpecialCells的调用将失败。

答案 1 :(得分:0)

我稍微玩了一下代码,并提出了这个解决方案。我不知道是否有更好的方法可以做到这一点。

如果有人感兴趣:

On Error Resume Next
For x = 1 To 200
If Not Range("a1").Offset(0, x).IsEmpty(ActiveCell.Value) Then 
Range("A:A").Offset(0, x).TextToColumns Destination:=Range("A1").Offset(0, x), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, 
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True

Next x