将文本转换为列

时间:2016-02-25 18:15:49

标签: excel-vba vba excel

我使用命令获取外部数据从另一个Excel文件中获取数据。数据的问题是我不能像操作单元格那样进行操作,因为类型不匹配错误。因此,我想使用命令Text to columns来转换每一列,但使用VBA(将宏记录到每列)有一个限制。如何更改数据格式,有时我的代码比我需要的短,有时比我需要的长。在这两种情况下,执行代码时都会出错。现在我正在寻找能够适应列中不同数据范围的代码。我可以做的是循环限制数据的大小并将每个单元转换为相同的类型并运行我的VBA代码进行分析。我对此感到困惑,所以我没有任何代码可以在这里分享。有人能帮我吗?

我得到了一些东西

Dim rng As Range

 For Each rng In Range("A:D").Columns
  rng.TextToColumns
Next rng

但是,当我发现一些空数据时,我卡住了。如果范围是空的,如何识别?

1 个答案:

答案 0 :(得分:0)

我不知道实际的答案是什么,但问题让我接受了GetExternalData抛出类型不匹配错误的原因,我用Google搜索了一段时间,发现了这个:

"类型不匹配"似乎没有正当理由。错误,它只是Excel的怪癖。如果在使用变量后在数组中开始一个新行,它往往会让它变得愉快。因此,将过程重新格式化为:

With ActiveSheet.QueryTables.Add(Connection:=Array( _ Array("ODBC;DSN=Excel Files;DBQ=H:\DATA" & Subdirectory & DataFile (DataFileNum)), _ Array(";DefaultDir=H:\DATA" & Subdirectory), _ Array(";DriverId=790;MaxBufferSize=2048;PageTimeou t=5;")), Destination:=ActiveCell)

应该修复你的"类型不匹配"错误。我希望这对某人有益。

找到它here