我反复使用以下代码来文本化某些数据列。我要从(“ A:A”)到(“ DM:DM”)重复这些行。有时,我要在其上运行的文件的列数少于该数量。即使是这种情况,我也使代码可以文本化以达到最大列数。但这会使执行速度变慢。我想将其转换为一个循环,如果下一列为空白,则执行将跳至下一个块。
好人能建议我这样做吗?
@CucumberOptions
谢谢!
答案 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